Using WordPress ‘added_{$meta_type}_meta’ PHP action

The added_{$meta_type}_meta WordPress PHP action fires immediately after meta of a specific type is added. The dynamic portion of the hook name, $meta_type, refers to the meta object type (post, comment, term, user, or any other type with an associated meta table).


add_action('added_{$meta_type}_meta', 'your_custom_function', 10, 4);

function your_custom_function($mid, $object_id, $meta_key, $_meta_value) {
    // Your custom code here

    return $mid;


  • $mid (int): The meta ID after a successful update.
  • $object_id (int): ID of the object metadata is for.
  • $meta_key (string): Metadata key.
  • $_meta_value (mixed): Metadata value.

More information

See WordPress Developer Resources: added_{$meta_type}_meta


Log added post meta

Log whenever a post meta is added.

add_action('added_post_meta', 'log_added_post_meta', 10, 4);

function log_added_post_meta($mid, $post_id, $meta_key, $meta_value) {
    // Log added post meta
    error_log("Post meta added: {$mid}, {$post_id}, {$meta_key}, {$meta_value}");

Notify admin when a user meta is added

Send an email to the admin when a specific user meta is added.

add_action('added_user_meta', 'notify_admin_user_meta_added', 10, 4);

function notify_admin_user_meta_added($mid, $user_id, $meta_key, $meta_value) {
    if ('custom_meta_key' === $meta_key) {
        $admin_email = get_option('admin_email');
        wp_mail($admin_email, 'User Meta Added', "User ID: {$user_id}, Meta key: {$meta_key}, Meta value: {$meta_value}");

Update term meta cache

Update term meta cache when a term meta is added.

add_action('added_term_meta', 'update_term_meta_cache', 10, 4);

function update_term_meta_cache($mid, $term_id, $meta_key, $meta_value) {
    wp_cache_delete($term_id, 'term_meta');

Add default comment meta

Add a default comment meta when a new comment meta is added.

add_action('added_comment_meta', 'add_default_comment_meta', 10, 4);

function add_default_comment_meta($mid, $comment_id, $meta_key, $meta_value) {
    if ('custom_comment_meta' !== $meta_key) {
        add_comment_meta($comment_id, 'custom_comment_meta', 'default_value');

Validate custom post meta

Validate custom post meta before it is added.

add_action('added_post_meta', 'validate_custom_post_meta', 10, 4);

function validate_custom_post_meta($mid, $post_id, $meta_key, $meta_value) {
    if ('custom_post_meta' === $meta_key && !validate_custom_value($meta_value)) {
        delete_metadata_by_mid('post', $mid);

function validate_custom_value($value) {
    // Validation logic here
    return true; // or false, based on the validation