add_metadata() WordPress Function

The add_metadata() function is used to add metadata to a post. It takes two parameters: the post ID and the metadata key. The value of the metadata key will be the value of the metadata.

add_metadata( string $meta_type, int $object_id, string $meta_key, mixed $meta_value, bool $unique = false ) #

Adds metadata for the specified object.


Parameters

$meta_type

(string)(Required)Type of object metadata is for. Accepts 'post', 'comment', 'term', 'user', or any other object type with an associated meta table.

$object_id

(int)(Required)ID of the object metadata is for.

$meta_key

(string)(Required)Metadata key.

$meta_value

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

$unique

(bool)(Optional) Whether the specified metadata key should be unique for the object. If true, and the object already has a value for the specified metadata key, no change will be made.

Default value: false


Top ↑

Return

(int|false) The meta ID on success, false on failure.


Top ↑

Source

File: wp-includes/meta.php

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
function add_metadata( $meta_type, $object_id, $meta_key, $meta_value, $unique = false ) {
    global $wpdb;
 
    if ( ! $meta_type || ! $meta_key || ! is_numeric( $object_id ) ) {
        return false;
    }
 
    $object_id = absint( $object_id );
    if ( ! $object_id ) {
        return false;
    }
 
    $table = _get_meta_table( $meta_type );
    if ( ! $table ) {
        return false;
    }
 
    $meta_subtype = get_object_subtype( $meta_type, $object_id );
 
    $column = sanitize_key( $meta_type . '_id' );
 
    // expected_slashed ($meta_key)
    $meta_key   = wp_unslash( $meta_key );
    $meta_value = wp_unslash( $meta_value );
    $meta_value = sanitize_meta( $meta_key, $meta_value, $meta_type, $meta_subtype );
 
    /**
     * Short-circuits adding metadata of a specific type.
     *
     * 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).
     * Returning a non-null value will effectively short-circuit the function.
     *
     * Possible hook names include:
     *
     *  - `add_post_metadata`
     *  - `add_comment_metadata`
     *  - `add_term_metadata`
     *  - `add_user_metadata`
     *
     * @since 3.1.0
     *
     * @param null|bool $check      Whether to allow adding metadata for the given type.
     * @param int       $object_id  ID of the object metadata is for.
     * @param string    $meta_key   Metadata key.
     * @param mixed     $meta_value Metadata value. Must be serializable if non-scalar.
     * @param bool      $unique     Whether the specified meta key should be unique for the object.
     */
    $check = apply_filters( "add_{$meta_type}_metadata", null, $object_id, $meta_key, $meta_value, $unique );
    if ( null !== $check ) {
        return $check;
    }
 
    if ( $unique && $wpdb->get_var(
        $wpdb->prepare(
            "SELECT COUNT(*) FROM $table WHERE meta_key = %s AND $column = %d",
            $meta_key,
            $object_id
        )
    ) ) {
        return false;
    }
 
    $_meta_value = $meta_value;
    $meta_value  = maybe_serialize( $meta_value );
 
    /**
     * Fires immediately before 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).
     *
     * Possible hook names include:
     *
     *  - `add_post_meta`
     *  - `add_comment_meta`
     *  - `add_term_meta`
     *  - `add_user_meta`
     *
     * @since 3.1.0
     *
     * @param int    $object_id   ID of the object metadata is for.
     * @param string $meta_key    Metadata key.
     * @param mixed  $_meta_value Metadata value.
     */
    do_action( "add_{$meta_type}_meta", $object_id, $meta_key, $_meta_value );
 
    $result = $wpdb->insert(
        $table,
        array(
            $column      => $object_id,
            'meta_key'   => $meta_key,
            'meta_value' => $meta_value,
        )
    );
 
    if ( ! $result ) {
        return false;
    }
 
    $mid = (int) $wpdb->insert_id;
 
    wp_cache_delete( $object_id, $meta_type . '_meta' );
 
    /**
     * 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).
     *
     * Possible hook names include:
     *
     *  - `added_post_meta`
     *  - `added_comment_meta`
     *  - `added_term_meta`
     *  - `added_user_meta`
     *
     * @since 2.9.0
     *
     * @param int    $mid         The meta ID after successful update.
     * @param int    $object_id   ID of the object metadata is for.
     * @param string $meta_key    Metadata key.
     * @param mixed  $_meta_value Metadata value.
     */
    do_action( "added_{$meta_type}_meta", $mid, $object_id, $meta_key, $_meta_value );
 
    return $mid;
}


Top ↑

Changelog

Changelog
VersionDescription
2.9.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by the Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.