update_post_meta

The timeline below displays how wordpress function update_post_meta has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Updates a post meta field based on the given post ID.
 *
 * Use the `$prev_value` parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added and its ID returned.
 *
 * Can be used in place of add_post_meta().
 *
 * @since 1.5.0
 *
 * @param int    $post_id    Post ID.
 * @param string $meta_key   Metadata key.
 * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed  $prev_value Optional. Previous value to check before updating.
 *                           If specified, only update existing metadata entries with
 *                           this value. Otherwise, update all entries. Default empty.
 * @return int|bool Meta ID if the key didn't exist, true on successful update,
 *                  false on failure or if the value passed to the function
 *                  is the same as the one that is already in the database.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // Make sure meta is updated for the post, not for a revision.
    $the_post = wp_is_post_revision($post_id);
    if ($the_post) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}

WordPress Version: 5.5

/**
 * Updates a post meta field based on the given post ID.
 *
 * Use the `$prev_value` parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added and its ID returned.
 *
 * Can be used in place of add_post_meta().
 *
 * @since 1.5.0
 *
 * @param int    $post_id    Post ID.
 * @param string $meta_key   Metadata key.
 * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed  $prev_value Optional. Previous value to check before updating.
 *                           If specified, only update existing metadata entries with
 *                           this value. Otherwise, update all entries. Default empty.
 * @return int|bool Meta ID if the key didn't exist, true on successful update,
 *                  false on failure or if the value passed to the function
 *                  is the same as the one that is already in the database.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // Make sure meta is added to the post, not a revision.
    $the_post = wp_is_post_revision($post_id);
    if ($the_post) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}

WordPress Version: 5.1

/**
 * Updates a post meta field based on the given post ID.
 *
 * Use the `$prev_value` parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added and its ID returned.
 *
 * Can be used in place of add_post_meta().
 *
 * @since 1.5.0
 *
 * @param int    $post_id    Post ID.
 * @param string $meta_key   Metadata key.
 * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed  $prev_value Optional. Previous value to check before updating.
 * @return int|bool The new meta field ID if a field with the given key didn't exist and was
 *                  therefore added, true on successful update, false on failure.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // Make sure meta is added to the post, not a revision.
    $the_post = wp_is_post_revision($post_id);
    if ($the_post) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}

WordPress Version: 5.0

/**
 * Update post meta field based on post ID.
 *
 * Use the $prev_value parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added.
 *
 * @since 1.5.0
 *
 * @param int    $post_id    Post ID.
 * @param string $meta_key   Metadata key.
 * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed  $prev_value Optional. Previous value to check before removing.
 *                           Default empty.
 * @return int|bool Meta ID if the key didn't exist, true on successful update,
 *                  false on failure.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // Make sure meta is added to the post, not a revision.
    $the_post = wp_is_post_revision($post_id);
    if ($the_post) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}

WordPress Version: 4.9

/**
 * Update post meta field based on post ID.
 *
 * Use the $prev_value parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added.
 *
 * @since 1.5.0
 *
 * @param int    $post_id    Post ID.
 * @param string $meta_key   Metadata key.
 * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed  $prev_value Optional. Previous value to check before removing.
 *                           Default empty.
 * @return int|bool Meta ID if the key didn't exist, true on successful update,
 *                  false on failure.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // Make sure meta is added to the post, not a revision.
    if ($the_post = wp_is_post_revision($post_id)) {
        $post_id = $the_post;
    }
    $updated = update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
    if ($updated) {
        wp_cache_set('last_changed', microtime(), 'posts');
    }
    return $updated;
}

WordPress Version: 4.0

/**
 * Update post meta field based on post ID.
 *
 * Use the $prev_value parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added.
 *
 * @since 1.5.0
 *
 * @param int    $post_id    Post ID.
 * @param string $meta_key   Metadata key.
 * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed  $prev_value Optional. Previous value to check before removing.
 *                           Default empty.
 * @return int|bool Meta ID if the key didn't exist, true on successful update,
 *                  false on failure.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // Make sure meta is added to the post, not a revision.
    if ($the_post = wp_is_post_revision($post_id)) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}

WordPress Version: 3.9

/**
 * Update post meta field based on post ID.
 *
 * Use the $prev_value parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added.
 *
 * @since 1.5.0
 * @link http://codex.wordpress.org/Function_Reference/update_post_meta
 *
 * @param int $post_id Post ID.
 * @param string $meta_key Metadata key.
 * @param mixed $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed $prev_value Optional. Previous value to check before removing.
 * @return int|bool Meta ID if the key didn't exist, true on successful update, false on failure.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // make sure meta is added to the post, not a revision
    if ($the_post = wp_is_post_revision($post_id)) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}

WordPress Version: 3.7

/**
 * Update post meta field based on post ID.
 *
 * Use the $prev_value parameter to differentiate between meta fields with the
 * same key and post ID.
 *
 * If the meta field for the post does not exist, it will be added.
 *
 * @since 1.5.0
 * @link http://codex.wordpress.org/Function_Reference/update_post_meta
 *
 * @param int $post_id Post ID.
 * @param string $meta_key Metadata key.
 * @param mixed $meta_value Metadata value. Must be serializable if non-scalar.
 * @param mixed $prev_value Optional. Previous value to check before removing.
 * @return bool True on success, false on failure.
 */
function update_post_meta($post_id, $meta_key, $meta_value, $prev_value = '')
{
    // make sure meta is added to the post, not a revision
    if ($the_post = wp_is_post_revision($post_id)) {
        $post_id = $the_post;
    }
    return update_metadata('post', $post_id, $meta_key, $meta_value, $prev_value);
}