apply_filters( "update_{$meta_type}_metadata", null|bool $check, int $object_id, string $meta_key, mixed $meta_value, mixed $prev_value )

Short-circuits updating metadata of a specific type.

Description Description

The dynamic portion of the hook, $meta_type, refers to the meta object type (post, comment, term, user, or any other type with an associated meta table). Returning a non-null value will effectively short-circuit the function.

Top ↑

Parameters Parameters


(null|bool) Whether to allow updating metadata for the given type.


(int) ID of the object metadata is for.


(string) Metadata key.


(mixed) Metadata value. Must be serializable if non-scalar.


(mixed) Previous value to check before updating. If specified, only update existing metadata entries with this value. Otherwise, update all entries.

Top ↑

More Information More Information

  • This filter is applied before a metadata gets updated; it allows short-circuiting the updating of metadata of a specific type by returning a non-null value.
  • The dynamic portion of the hook, $meta_type, refers to the meta object type. For example, if a ‘user’ metadata gets updated, the hook would be ‘update_user_metadata‘.
  • The filter must return a null value (the value of $check) if the data is be saved to the database. If it returns anything else, the ‘update_metadata‘ function (and therefore the ‘update_{$meta_type}_metadata‘ filter) will return what the filter callbacks return.

Top ↑

Source Source

File: wp-includes/meta.php

View on Trac

Top ↑

Changelog Changelog

Version Description
3.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by stevenlinx

    Example migrated from Codex:

    The example below skips saving the metadata with the key ‘foo’ and an empty value. For other metadata, continue the normal execution.

    add_action( 'init', 'myplugin_init' );
    function myplugin_init() {
       add_filter( 'update_user_metadata', 'myplugin_update_foo', 10, 5 );
    function myplugin_update_foo( $null, $object_id, $meta_key, $meta_value, $prev_value ) {
       if ( 'foo' == $meta_key && empty( $meta_value ) ) {
          return true; // this means: stop saving the value into the database
       return null; // this means: go on with the normal execution in meta.php

You must log in before being able to contribute a note or feedback.