wppaste
WordPress

get_post_meta( int $post_id, string $key = '', bool $single = false ): mixed

Since
1.5.0
Source
wp-includes/post.php:2750

Read a post's custom field with get_post_meta(); pass true as the third argument to get one value instead of an array of every value for the key. Omitting $key returns all meta for the post. A missing key yields an empty string (single) or an empty array, and non-serialized scalars are returned as strings.

Retrieves a post meta field for the given post ID.

Parameters

$post_idint
Post ID.
$keystringoptional
The meta key to retrieve. By default, returns data for all keys. Default empty.Default: ''
$singlebooloptional
Whether to return a single value. This parameter has no effect if $key is not specified. Default false.Default: false

Return

mixed
An array of values if $single is false. The value of the meta field if $single is true. False for an invalid $post_id (non-numeric, zero, or negative value). An empty array if a valid but non-existing post ID is passed and $single is false. An empty string if a valid but non-existing post ID is passed and $single is true. Note: Non-serialized values are returned as strings: - false values are returned as empty strings ('') - true values are returned as '1' - numbers (both integer and float) are returned as strings Arrays and objects retain their original type.

Examples

Every example is editable and runs in a real WordPress booted in your browser by WordPress Playground. Press Run, then edit the code: clicking away re-runs it. Nothing is sent anywhere until you do.

Get a single custom field value

Passing true for $single returns the value itself rather than an array of every row.

$price = get_post_meta( 2, 'price', true );

if ( '' !== $price ) {
	echo 'Price: ', esc_html( $price );
} else {
	echo 'That post has no price set.';
}

A missing key returns an empty string with $single true, and an empty array without it.

Read every value stored under one key

A key can hold many rows; omitting $single gives you all of them in the order they were stored.

delete_post_meta( 3, 'ticket_url' );
add_post_meta( 3, 'ticket_url', 'https://example.com/early-bird' );
add_post_meta( 3, 'ticket_url', 'https://example.com/general' );

$urls = get_post_meta( 3, 'ticket_url' );

print_r( $urls );

add_post_meta() appends a row; update_post_meta() replaces one.

Uses · 1

  • get_metadata()Retrieves the value of a metadata field for the specified object type and ID.

Used by · 50

Show all 50

Source

function get_post_meta( $post_id, $key = '', $single = false ) {	return get_metadata( 'post', $post_id, $key, $single );}

History

Introduced in 1.5.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 7.1.0 tag, from src/wp-includes/post.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.