Form ID seems missing from set user role code

Hi. I’ve looked at User Registration - allow user to select role [RESOLVED] for a similar need and landed on https://docs.gravityforms.com/gform_user_registered/. I see that we can specify fields, for example in the one I’d want to use for set user role, but I don’t see a way to specify which form that field should be looked for in. The set user role code is:

add_action( 'gform_user_registered' , 'set_user_role' , 10, 3 );

function set_user_role( $user_id , $feed , $entry ) {

// get role from field 5 of the entry.

$selected_role = rgar( $entry , '5' );

$user = new WP_User( $user_id );

$user ->set_role( $selected_role );

}

Don’t we need to specify a form here?

Hello. gform_user_registered runs for all user registration forms. If you need to determine which field to check, depending on the form ID (i.e. if it’s form 1, use field 5; if it’s form 4, use field 12) you check the form ID in the $entry object and do something like this:

add_action( 'gform_user_registered' , 'set_user_role' , 10, 3 );
function set_user_role( $user_id , $feed , $entry ) {
    $form_id = rgar ( $entry, 'form_id' );
    if( $form_id == 1 ) {
        $field_id = 5;
    }
    if( $form_id == 4 ) {
        $field_id = 12;
    }
    $selected_role = rgar( $entry , $field_id );
    $user = new WP_User( $user_id );
    $user ->set_role( $selected_role );
}

Thank you!

1 Like