Skip to main content

MB User Profile

MB User Profile helps you to add information to user profile and edit these details on the front end. It also includes 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

[mb_user_profile_register]

This shortcode shows the user register form. If you want to add more fields in this form, create a field group for users. Then add the field group ID in the id attribute of the shortcode.

Shortcode attributes

NameDescription
idField group ID(s), separated by commas. All fields from field groups will be included in the registration form. If not specify, it shows the default registration form.
redirectRedirect URL, to which users will be redirected after successful registration.
form_idID (HTML attribute) of the form.
id_usernameID (HTML attribute) of the username input field.
id_emailID (HTML attribute) of the email input field.
id_passwordID (HTML attribute) of the password input field.
id_password2ID (HTML attribute) of the confirm password input field.
id_submitID (HTML attribute) of the submit button.
label_usernameLabel for the username input field.
label_emailLabel for the email input field.
label_passwordLabel for the password input field.
label_password2Label for the confirm password input field.
label_submitLabel for the submit button.
confirmationConfirmation message if registration is successful.
email_confirmationSend confirmation email when register (you need to setup an email SMTP to make this function work properly). If this param is true, system will also check confirmation status when user login. All previous users are set confirmed.
password_strengthSet the required password strength. Available options: strong, medium, weak, very-weak or false to disable password strength meter.
email_as_usernameUse email for username. If this param is true, then the username field will disappear.
recaptcha_keyGoogle reCaptcha site key (version 3). Optional.
recaptcha_secretGoogle reCaptcha secret key (version 3). Optional.
show_if_user_canAlways show the form if the current user has a proper capability. Should be a WordPress capability. Useful if admins want to register for other people.
roleRole for the new user. Default is empty.
append_roleWhether to append the role to users instead of setting only one role for users.

Login form

[mb_user_profile_login]

This shortcode shows the normal login form.

Shortcode attributes

NameDescription
redirectRedirect URL, to which users will be redirected after successful login.
form_idID (HTML attribute) of the form.
id_usernameID (HTML attribute) of the username input field.
id_passwordID (HTML attribute) of the password input field.
id_rememberID (HTML attribute) of the remember checkbox field.
id_submitID (HTML attribute) of the submit button.
label_usernameLabel for the username input field.
label_passwordLabel for the password input field.
label_rememberLabel for the remember checkbox field.
label_lost_passwordLabel for the lost password link.
label_submitLabel for the submit button.
confirmationConfirmation message if login is successful.
value_usernameDefault value for username field.
value_rememberDefault value for remember checkbox field - true or false (default).
recaptcha_keyGoogle reCaptcha site key (version 3). Optional.
recaptcha_secretGoogle reCaptcha secret key (version 3). Optional.

Edit profile form

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

This shortcode shows the user profile form that allows users to edit their information. Note that you need to create a field group for users. Then add the field group ID in the id attribute of the shortcode.

If you have multiple field groups that you want to display in the profile form, enter their IDs separated by commas.

Shortcode attributes

NameDescription
idField group ID(s), separated by commas. All fields from field groups will be included in the profile form. Required.
user_idUser ID, whose info will be edited. If not specified, current user ID is used.
redirectRedirect URL, to which users will be redirected after successful submission.
form_idID (HTML attribute) of the form.
id_passwordID (HTML attribute) of the password input field.
id_password2ID (HTML attribute) of the confirm password input field.
id_submitID (HTML attribute) of the submit button.
label_passwordLabel for the password input field.
label_password2Label for the confirm password input field.
label_submitLabel for the submit button.
confirmationConfirmation message if the form submission is successful.
recaptcha_keyGoogle reCaptcha site key (version 3). Optional.
recaptcha_secretGoogle reCaptcha secret key (version 3). Optional.
password_strengthSet the required password strength. Available options: strong, medium, weak, very-weak or false to disable password strength meter.

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 user 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"]

In order to make the plugin recognize the user fields, you need to set correct ID for them. See the table below:

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 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 as below:

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

Hooks

rwmb_profile_redirect

This filter allows you to change the URL of the redirect page after 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 an 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( 'admin@domain.com', '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 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 fields 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 fields 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

Notes

Upload files / images

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

function mb_allow_subscriber_uploads() {
if ( is_admin() ) {
return;
}

// Replace 'subscriber' with the required role to update, can also be contributor.
$subscriber = get_role( 'subscriber' );
$subscriber->add_cap( 'upload_files' );
}
add_action( 'init', 'mb_allow_subscriber_uploads' );

Another solution is using file or image fields. Both of them works similar. 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 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 embeded (both caching plugins allow you to do that). For more information, please read this technical article.