Skip to main content

MB User Profile

MB User Profile helps you to add information to the user profile and edit these details on the front end. It also includes a register form, login form, and edit profile form that you can embed anywhere using shortcodes.

user profile page

Note: this extension already includes MB User Meta.

Registration form

To insert a registration form to a page, select the Registration Form block from the block inserter. And you'll see the form preview like this:

Registration form block

Clicking on the block will reveal the form settings on the right. All settings are self-explained and have their description.

You can also use the registration shortcode to display the registration form:

[mb_user_profile_register]

Below is the list of the settings. The attribute is used for the shortcode.

NameAttributeDescription
IDidField group ID(s) created for users, separated by commas. Optional. Leave blank to show the default registration form.
Redirect URLredirectRedirect URL, to which users will be redirected after a successful registration.
Form IDform_idID (HTML attribute) of the form.
Titlelabel_titleLabel for the title of the form. Default empty.
Username field labellabel_usernameLabel for the username input field.
Email field labellabel_emailLabel for the email input field.
Password field labellabel_passwordLabel for the password input field.
Confirm password field labellabel_password2Label for the confirm password input field.
Submit button textlabel_submitLabel for the submit button.
Username field IDid_usernameID (HTML attribute) of the username input field.
Email field IDid_emailID (HTML attribute) of the email input field.
Password field IDid_passwordID (HTML attribute) of the password input field.
Confirm password field IDid_password2ID (HTML attribute) of the confirm password input field.
Submit button IDid_submitID (HTML attribute) of the submit button.
Confirmation textconfirmationConfirmation message if registration is successful.
Send confirmation emailemail_confirmationSend a confirmation email when registering (you need to set up an email SMTP to make this function work properly). If this param is true, the system will also check the confirmation status when the user login. All previous users are set and confirmed.
Password strengthpassword_strengthSet the required password strength. Available options: strong, medium, weak, very-weak, or false to disable password strength meter.
Use email for usernameemail_as_usernameUse email for username. If this param is true, then the username field will disappear.
Always showshow_if_user_canAlways show the form if the current user has the proper capability. Should be a WordPress capability. Useful if admins want to register for other people.
Role for the new userroleRole for the new user. If append_role is set to true, then the new role is appended, so users will have 2 roles: the default roles set by WordPress and this role. Default empty.
Append roleappend_roleWhether to append the role to users instead of setting only one role for users.
reCaptcha keyrecaptcha_keyGoogle reCaptcha site key (version 3). Optional.
reCaptcha secretrecaptcha_secretGoogle reCaptcha secret key (version 3). Optional.

Login form

To insert a login form to a page, select the Login Form block from the block inserter. And you'll see the form preview like this:

Login form block

Clicking on the block will reveal the form settings on the right. All settings are self-explained and have their description.

You can also use the login shortcode to display the login form:

[mb_user_profile_login]

Below is the list of the settings. The attribute is used for the shortcode.

NameAttributeDescription
Redirect URLredirectRedirect URL, to which users will be redirected after successful login.
Form IDform_idID (HTML attribute) of the form.
Titlelabel_titleLabel for the title of the form. Default empty.
Username field labellabel_usernameLabel for the username input field.
Password field labellabel_passwordLabel for the password input field.
Remember checkbox labellabel_rememberLabel for the remember checkbox field.
Lost password field labellabel_lost_passwordLabel for the lost password link.
Submit button textlabel_submitLabel for the submit button.
Username field IDid_usernameID (HTML attribute) of the username input field.
Password field IDid_passwordID (HTML attribute) of the password input field.
Remember checkbox IDid_rememberID (HTML attribute) of the remember checkbox field.
Submit button IDid_submitID (HTML attribute) of the submit button.
Confirmation textconfirmationConfirmation message if login is successful.
Default username valuevalue_usernameDefault value for the username field.
Default remembervalue_rememberDefault value for the remember checkbox field - true or false (default).
reCaptcha keyrecaptcha_keyGoogle reCaptcha site key (version 3). Optional.
reCaptcha secretrecaptcha_secretGoogle reCaptcha secret key (version 3). Optional.

Edit profile form

To insert an edit profile form to a page, select the Edit Profile Form block from the block inserter. And you'll see the form preview like this:

Edit profile form block

Clicking on the block will reveal the form settings on the right. All settings are self-explained and have their description.

You can also use the edit profile shortcode to display the edit profile form:

[mb_user_profile_info id="field-group-id"]

Below is the list of the settings. The attribute is used for the shortcode.

NameAttributeDescription
IDidField group ID(s) created for users, separated by commas. All fields from field groups will be included in the profile form. Required.
User IDuser_idUser ID, whose info will be edited. If not specified, the current user ID is used.
Redirect URLredirectRedirect URL, to which users will be redirected after successful submission.
Form IDform_idID (HTML attribute) of the form.
Titlelabel_titleLabel for the title of the form. Default empty.
Password field labellabel_passwordLabel for the password input field.
Confirm password field labellabel_password2Label for the confirm password input field.
Submit button textlabel_submitLabel for the submit button.
Password field IDid_passwordID (HTML attribute) of the password input field.
Confirm password field IDid_password2ID (HTML attribute) of the confirm password input field.
Submit button IDid_submitID (HTML attribute) of the submit button.
Confirmation textconfirmationConfirmation message if the form submission is successful.
Password strengthpassword_strengthSet the required password strength. Available options: strong, medium, weak, very-weak, or false to disable password strength meter.
reCaptcha keyrecaptcha_keyGoogle reCaptcha site key (version 3). Optional.
reCaptcha secretrecaptcha_secretGoogle reCaptcha secret key (version 3). Optional.

Default fields

By default, the user profile form doesn't include any default user fields, such as first name, last name, or biography. To be able to edit these fields, please create a field group for users with those fields, keeping the same field IDs as WordPress's.

For example, the code below creates a meta box for editing the user's first name, last name, and biography:

add_filter( 'rwmb_meta_boxes', function( $meta_boxes ) {
$meta_boxes[] = [
'title' => 'Default Fields',
'id' => 'default-fields',
'type' => 'user', // NOTICE THIS
'fields' => [
[
'id' => 'first_name',
'name' => 'First Name',
'type' => 'text',
],
[
'id' => 'last_name',
'name' => 'Last Name',
'type' => 'text',
],
[
'id' => 'description',
'name' => 'Biography',
'type' => 'textarea',
],
],
];
return $meta_boxes;
} );

And use it in the user edit profile form with this shortcode:

[mb_user_profile_info id="default-fields"]

To make the plugin recognize the user fields, you need to set the correct ID for them:

FieldID
User emailuser_email
User nicenameuser_nicename
User URLuser_url
Display namedisplay_name
First namefirst_name
Last namelast_name
Registration dateuser_registered
Biographydescription
Rich editingrich_editing
Syntax highlightingsyntax_highlighting
Admin coloradmin_color
Comment shortcutscomment_shortcuts
Show the admin bar on the frontadmin_bar_front
User rolerole
caution

These default fields do not work as sub-fields in a group.

User password

To let users change their password, please use the field group ID rwmb-user-info in the shortcode below:

[mb_user_profile_info id="rwmb-user-info"]

Settings

MB User Profile has a settings page under Meta Box > User Profile that allows you to change some settings for the plugin.

User profile settings

  • Force password change: force users to change their password after the first login.
  • Email confirmation success page: select a page to show when users successfully confirm their email. If no page is selected, a default message will be displayed.
  • Email confirmation error page: select a page to show when there are errors when users confirming their email. If no page is selected, a default message will be displayed.

Email templates

MB User Profile sends emails to users when:

  • They reset their passwords
  • They register and are requested to confirm by email

To overwrite the emails created by the plugin, please:

  • Create a folder mb-user-profile in your theme (or your child theme)
  • Copy the email templates from the MB User Profile's templates folder to the mb-user-profile folder that you've just created above
  • Edit the new templates files

Now the emails sent by the plugin will use the templates in your theme.

Hooks

rwmb_profile_redirect

This filter allows you to change the URL of the redirect page after the form is submitted. It accepts 2 parameters: redirect URL and form config - the shortcode attributes.

$redirect = apply_filters( 'rwmb_profile_redirect', $redirect, $config );

You can use this filter to change the redirect URL after a user updated his profile.

add_filter( 'rwmb_profile_redirect', function( $redirect, $config ) {
if ( 'my-meta-box' === $config['id'] ) {
$redirect = 'https://domain.com/thank-you/';
}
return $redirect;
}, 10, 2 );

rwmb_profile_before_process

This action fires before the form is processed. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_after_process

This action fires after the form is processed, e.g. saved or updated. It accepts 2 parameters:

  • $config - the form configuration, taken from the shortcode attributes.
  • $user_id - the submitted user ID

You can use this action to do a custom redirect to your Thank you page or send an email notification.

add_action( 'rwmb_profile_after_process', function( $config, $user_id ) {
if ( 'my-meta-box' === $config['id'] ) {
wp_mail( '[email protected]', 'New submission', 'A new user has been just submitted.' );

wp_safe_redirect( 'thank-you' );
die;
}
}, 10, 2 );

rwmb_profile_before_form

This action fires before form output. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_after_form

This action fires after form output. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_before_display_confirmation

This action fires before the confirmation message is displayed. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_after_display_confirmation

This action fires after the confirmation message is displayed. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_before_submit_button

This action fires before the submit button is displayed. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_after_submit_button

This action fires after the submit button is displayed. It accepts one parameter $config - the form configuration, taken from the shortcode attributes.

rwmb_profile_validate

This filter is used to check if the form is validated. You can use this filter to add a custom check for the data before it's processed.

$is_valid = apply_filters( 'rwmb_profile_validate', $is_valid, $config );

rwmb_profile_insert_user_data

This filter is used to modify the submitted user data before it's passed to the wp_insert_user function to create a new user. It accepts 2 parameters: the array of user data and the shortcode parameters.

$data = apply_filters( 'rwmb_profile_insert_user_data', $data, $config );

Please note that this filter works only for default user fields such as user email or password. For changing custom field data, please use rwmb_{$field_id}_value filter.

rwmb_profile_update_user_data

This filter is used to modify the submitted user data before it's passed to the wp_update_user function to update an existing user. It accepts 2 parameters: the array of user data and the shortcode parameters.

$data = apply_filters( 'rwmb_profile_update_user_data', $data, $config );

Please note that this filter works only for default user fields such as user email or password. For changing custom field data, please use rwmb_{$field_id}_value filter.

Default form fields

To modify the default register, login, or edit profile form fields, please use the following filters:

$fields = apply_filters( 'rwmb_profile_register_fields', $fields );
$fields = apply_filters( 'rwmb_profile_login_fields', $fields );
$fields = apply_filters( 'rwmb_profile_info_fields', $fields );

rwmb_profile_before_save_user

This action fires before the user is created or updated.

do_action( 'rwmb_profile_before_save_user', $object );

The action accepts 1 parameter: the instance of the MB_User_Profile_User class, which handles the submission. It has the following public properties that you can use:

  • $user_id: The submitted user ID
  • $config: The configuration, taken from the shortcode attributes

rwmb_profile_after_save_user

This action fires after the user is created or updated. At that time, all the custom fields in the meta box are already saved into the user meta.

do_action( 'rwmb_profile_after_save_user', $object );

The action accepts 1 parameter: the instance of the MB_User_Profile_User class, which handles the submission. It has the following public properties that you can use:

  • $user_id: The submitted user ID
  • $config: The configuration, taken from the shortcode attributes

Known issues

Upload files/images

To be able to upload files or images (via fields file_advanced, file_upload, image_advanced, image_upload), users have to log in and proper capability upload_files to access the Media Library. If your users don't have that capability (like if they have the subscriber role), then the upload fields don't work. In that case, you can add the capability for that role as follows:

add_action( 'init', function () {
$subscriber = get_role( 'subscriber' );
$subscriber->add_cap( 'upload_files' );
} );

Another solution is using file or image fields. Both of them work similarly. They just don't have a nice UI, but they do the job very well.

Styling

The extension outputs the default fields' HTML with CSS comes from the Meta Box plugin. The style is basic and works in most cases. However, to make it match perfectly with your theme's style, you need to do some work with CSS.

Caching

As you might know, Meta Box uses nonces to prevent misuse or malicious requests. As the nonce fields are outputted directly in the HTML, they might be cached by caching plugins such as W3 Total Cache, WP Super Cache, etc. And thus, the verification of the nonce might not work properly and break the form submission. In this case, please do not cache the page where the form is embedded (caching plugins allow you to do that).