The insert_custom_user_meta WordPress PHP Filter allows you to modify a user’s custom meta values and keys right after the user is created or updated, but before the user meta is inserted or updated.
Usage
add_filter('insert_custom_user_meta', 'your_function_name', 10, 4);
function your_function_name($custom_meta, $user, $update, $userdata) {
// your custom code here
return $custom_meta;
}
Parameters
- $custom_meta (array): Array of custom user meta values keyed by meta key.
- $user (WP_User): User object.
- $update (bool): Whether the user is being updated rather than created.
- $userdata (array): The raw array of data passed to wp_insert_user().
More information
See WordPress Developer Resources: insert_custom_user_meta
Examples
Adding a custom meta key-value pair
Add a new custom meta key-value pair to the user.
add_filter('insert_custom_user_meta', 'add_custom_meta_key_value', 10, 4);
function add_custom_meta_key_value($custom_meta, $user, $update, $userdata) {
$custom_meta['custom_key'] = 'custom_value';
return $custom_meta;
}
Modifying an existing custom meta value
Modify an existing custom meta value based on certain conditions.
add_filter('insert_custom_user_meta', 'modify_custom_meta_value', 10, 4);
function modify_custom_meta_value($custom_meta, $user, $update, $userdata) {
if ($custom_meta['some_key'] == 'some_value') {
$custom_meta['some_key'] = 'new_value';
}
return $custom_meta;
}
Removing a custom meta key-value pair
Remove a custom meta key-value pair from the user.
add_filter('insert_custom_user_meta', 'remove_custom_meta_key', 10, 4);
function remove_custom_meta_key($custom_meta, $user, $update, $userdata) {
unset($custom_meta['custom_key']);
return $custom_meta;
}
Add custom meta based on user role
Add custom meta based on the user role.
add_filter('insert_custom_user_meta', 'add_meta_based_on_role', 10, 4);
function add_meta_based_on_role($custom_meta, $user, $update, $userdata) {
if (in_array('administrator', $user->roles)) {
$custom_meta['admin_meta_key'] = 'admin_meta_value';
}
return $custom_meta;
}
Update custom meta based on a specific user ID
Update custom meta for a specific user ID.
add_filter('insert_custom_user_meta', 'update_meta_for_specific_user', 10, 4);
function update_meta_for_specific_user($custom_meta, $user, $update, $userdata) {
if ($user->ID == 123) {
$custom_meta['specific_key'] = 'specific_value';
}
return $custom_meta;
}