I've run in to a bit of a problem with gform_username
. When I use the code provided on the documents:
add_filter('gform_username', 'auto_username');
function auto_username($username){
$username = strtolower(rgpost('input_12_41_3') . rgpost('input_12_41_6'));
if(empty($username))
return $username;
if(!function_exists('username_exists'))
require_once(ABSPATH . WPINC . "/registration.php");
if(username_exists($username)){
$i = 2;
while(username_exists($username . $i)){
$i++;
}
$username = $username . $i;
};
return $username;
}
When I submit the form, the field I set as "username" from the user registration always returns a validation error stating "username must not be empty" (or something to that effect). This happened for any field I set as "username". If I changed the $_POST["input_42"] == 'some random string'; it still broke. Upon commenting the above code, the form worked perfectly fine. So it leads me to believe there's an issue with the function (I haven't dug in to the code).
As a work-around I created a hidden field called uid which I set as the "username". I had to pre-populate this field via gform_field_value_uid
so it was not empty, then use a gform_pre_submission
to repopulate the uid $_POST
value to what I wanted the username to actually be.
add_action("gform_pre_submission", "populate_username");
function populate_username($form){
$_POST["input_42"] = $_POST["input_41_3"] . $_POST["input_41_6"];
// input_41_3 & input_41_6 are first & last name based on advanced name field.
}
add_filter("gform_field_value_uid", "populate_uid");
function populate_uid($value){
return md5(rand_string(20));
}