gform_user_registered

Description

This action is used to trigger an event once a user has been registered through the User Registration Add-on.

Usage

Applies to all forms

add_action( 'gform_user_registered', 'your_function_name', 10, 4 );

Parameters

ParameterTypeDescription
$user_idintegerThe ID of the user that was created.
$feedFeed Object The feed currently being processed.
$entryEntry ObjectThe entry currently being processed.
$user_passstringThe value of the mapped password field from the entry or an automatically generated password.
Note: The user entered password is not available when the feed is processed in the background or when the delayed feed is processed by a payment add-on.

Examples

Update user meta

Here is an example from the User Registration source code where BuddyPress profile data is added for the user using the gform_user_registered hook.

add_action( 'gform_user_registered', 'add_custom_user_meta', 10, 4 );
function add_custom_user_meta( $user_id, $feed, $entry, $user_pass ) {
	update_user_meta( $user_id, 'user_confirmation_number', rgar( $entry, '1' ) );
}

Set user role

The following example shows how you can set the user role based on the value of a field.

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 );
}

Trigger Mailchimp feed

This example shows how you can trigger the processing of Mailchimp feeds for this entry.

add_action( 'gform_user_registered', 'send_to_mailchimp', 10, 3 );
function send_to_mailchimp( $user_id, $feed, $entry ) {
	$form = GFAPI::get_form( $entry['form_id'] );
	GFAPI::maybe_process_feeds( $entry, $form, 'gravityformsmailchimp', true );
}

Update entry created_by property

This example shows how you can update the entry created_by property with the ID of the new user.

add_action( 'gform_user_registered', 'sh_gform_user_registered', 10, 3 );
function sh_gform_user_registered( $user_id, $config, $entry ) {
	GFAPI::update_entry_property( $entry['id'], 'created_by', $user_id );
}

Add additional user role

This example shows how you can add an additional user role based on the value of a field.

add_action( 'gform_user_registered', 'add_user_role', 10, 3 );
function add_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->add_role( $selected_role );
}

Add multiple additional user roles

This example shows how you can add multiple additional user roles based on the choices selected for a Multiple Choice field type. Just add the snippet to your site (no changes required), and enter additional_roles as CSS class in the Custom CSS Class setting for the field you want to use as the source for the roles selected.

add_filter( 'gform_user_registered', function( $user_id, $feed, $entry ) {
	gf_user_registration()->log_debug( 'Running additional for multiple additional roles...' );

	$form = GFAPI::get_form( rgar( $entry, 'form_id' ) );
 
	foreach ( $form['fields'] as &$field ) {
		gf_user_registration()->log_debug( "(): Field id: {$field->id}, Type: {$field->type}, CSS: {$field->cssClass}" );
		if ( strpos( $field->cssClass, 'additional_roles' ) !== false ) { // Field must be a Multiple Choices field.
			// Get a comma separated list of choices selected.
			$selected_choices = $field->get_value_export( $entry );
			gf_user_registration()->log_debug( "Values: {$selected_choices}" );
			if ( ! empty( $selected_choices ) && 'multi_choice' === $field->type ) {
				// Convert to array.
				$choices_array = explode( ', ', $selected_choices );
				gf_user_registration()->log_debug( 'Choices Array: ' . print_r( $choices_array, true ) );

				foreach ( $choices_array as &$role ) {
					$role = strtolower( $role );
					$user          = new WP_User( $user_id );
					$user->add_role( $role );
					gf_user_registration()->log_debug( "Added additional role: {$role}" );
				}

			}
		}
	}
}, 10, 3 );

Placement

This code should be placed in the functions.php file of your active theme.

Source Code

do_action( 'gform_user_registered', $user_id, $feed, $entry, $user_data['password'] );

This filter is located in GF_User_Registration::create_user() in class-gf-user-registration.php.