W3cubDocs

/WordPress

add_post_meta( int $post_id, string $meta_key, mixed $meta_value, bool $unique = false ): int|false

Adds a meta field to the given post.

Description

Post meta data is called "Custom Fields" on the Administration Screen.

Parameters

$post_idintrequired
Post ID.
$meta_keystringrequired
Metadata name.
$meta_valuemixedrequired
Metadata value. Must be serializable if non-scalar.
$uniquebooloptional
Whether the same key should not be added.

Default:false

Return

int|false Meta ID on success, false on failure.

More Information

Note that if the given key already exists among custom fields of the specified post, another custom field with the same key is added unless the $unique argument is set to true, in which case, no changes are made. If you want to update the value of an existing key, use the update_post_meta() function instead

Character Escaping

Because meta values are passed through the stripslashes() function, you need to be careful about content escaped with \ characters. You can read more about the behavior, and a workaround example, in the update_post_meta() documentation.

Source

function add_post_meta( $post_id, $meta_key, $meta_value, $unique = false ) {
	// 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 add_metadata( 'post', $post_id, $meta_key, $meta_value, $unique );
}

Changelog

Version Description
1.5.0 Introduced.

© 2003–2024 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/add_post_meta