The insert_user_meta WordPress PHP Filter allows you to modify a user’s meta values and keys right after the user is created or updated, and before any user meta is inserted or updated.
Usage
add_filter('insert_user_meta', 'your_custom_function', 10, 3);
function your_custom_function($meta, $user, $update) {
// your custom code here
return $meta;
}
Parameters
$meta(array): Default meta values and keys for the user.$user(WP_User): User object.$update(bool): Whether the user is being updated rather than created.
More information
See WordPress Developer Resources: insert_user_meta
Examples
Add custom user meta field
Add a custom user meta field called job_title.
add_filter('insert_user_meta', 'add_job_title_meta', 10, 3);
function add_job_title_meta($meta, $user, $update) {
$meta['job_title'] = 'Web Developer';
return $meta;
}
Modify the default admin color
Change the default admin color scheme for new users.
add_filter('insert_user_meta', 'change_default_admin_color', 10, 3);
function change_default_admin_color($meta, $user, $update) {
if (!$update) {
$meta['admin_color'] = 'light';
}
return $meta;
}
Disable rich editing for a specific user role
Disable the rich editor for users with the ‘editor’ role.
add_filter('insert_user_meta', 'disable_rich_editing_for_editors', 10, 3);
function disable_rich_editing_for_editors($meta, $user, $update) {
if (in_array('editor', $user->roles)) {
$meta['rich_editing'] = 'false';
}
return $meta;
}
Force SSL for administrators
Force SSL for users with the ‘administrator’ role.
add_filter('insert_user_meta', 'force_ssl_for_administrators', 10, 3);
function force_ssl_for_administrators($meta, $user, $update) {
if (in_array('administrator', $user->roles)) {
$meta['use_ssl'] = 1;
}
return $meta;
}
Set locale based on user role
Set a different locale for users with the ‘translator’ role.
add_filter('insert_user_meta', 'set_locale_for_translators', 10, 3);
function set_locale_for_translators($meta, $user, $update) {
if (in_array(‘translator’, $user->roles)) {
$meta[‘locale’] = ‘es_ES’;
}
return $meta;
}