The auth_{$object_type}meta{$meta_key}for{$object_subtype} WordPress PHP filter allows you to control whether a user can edit a specific meta key for a particular object type and subtype.
Usage
add_filter('auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}', 'your_custom_function', 10, 6);
function your_custom_function($allowed, $meta_key, $object_id, $user_id, $cap, $caps) {
// Your custom code here
return $allowed;
}
Parameters
- $allowed (bool): Whether the user can edit the object meta. Default is false.
- $meta_key (string): The meta key.
- $object_id (int): Object ID.
- $user_id (int): User ID.
- $cap (string): Capability name.
- $caps (string[]): Array of the user’s capabilities.
More information
See WordPress Developer Resources: auth_{$object_type}meta{$meta_key}for{$object_subtype}
Examples
Allow editing of custom meta key for posts
Allow users with the edit_posts capability to edit a custom meta key my_custom_key for posts.
add_filter('auth_post_meta_my_custom_key_for_post', 'allow_edit_custom_meta_key', 10, 6);
function allow_edit_custom_meta_key($allowed, $meta_key, $object_id, $user_id, $cap, $caps) {
if (in_array('edit_posts', $caps)) {
$allowed = true;
}
return $allowed;
}
Restrict editing of user meta key for administrators
Prevent users from editing the admin_notes meta key for users unless they have the manage_options capability.
add_filter('auth_user_meta_admin_notes_for_user', 'restrict_user_meta_key_edit', 10, 6);
function restrict_user_meta_key_edit($allowed, $meta_key, $object_id, $user_id, $cap, $caps) {
if (in_array('manage_options', $caps)) {
$allowed = true;
} else {
$allowed = false;
}
return $allowed;
}
Allow editing of term meta key for specific taxonomy
Allow users with the manage_categories capability to edit the term_color meta key for categories.
add_filter('auth_term_meta_term_color_for_category', 'allow_edit_term_meta_key', 10, 6);
function allow_edit_term_meta_key($allowed, $meta_key, $object_id, $user_id, $cap, $caps) {
if (in_array('manage_categories', $caps)) {
$allowed = true;
}
return $allowed;
}
Restrict editing of comment meta key based on user role
Prevent users with the subscriber role from editing the comment_rating meta key for comments.
add_filter('auth_comment_meta_comment_rating_for_comment', 'restrict_comment_meta_key_edit', 10, 6);
function restrict_comment_meta_key_edit($allowed, $meta_key, $object_id, $user_id, $cap, $caps) {
$user = get_userdata($user_id);
if (in_array('subscriber', $user->roles)) {
$allowed = false;
} else {
$allowed = true;
}
return $allowed;
}
Allow editing of post meta key based on custom user capability
Allow users with the `edit_advanced_meta` custom capability to edit the `advanced_options` meta key for posts.
add_filter('auth_post_meta_advanced_options_for_post', 'allow_edit_advanced_meta_key', 10, 6);
function allow_edit_advanced_meta_key($allowed, $meta_key, $object_id, $user_id, $cap, $caps) {
if (in_array('edit_advanced_meta', $caps)) {
$allowed = true;
}
return $allowed;
}