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.
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
$keyis not specified. Default false.Default:false
Return
mixed- An array of values if
$singleis false. The value of the meta field if$singleis 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$singleis false. An empty string if a valid but non-existing post ID is passed and$singleis 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
- Custom_Image_Header::get_uploaded_header_images()Gets the previously uploaded header images.
- WP_Customize_Manager::import_theme_starter_content()Imports theme starter content into the customized state.
- WP_Customize_Manager::refresh_changeset_lock()Refreshes changeset lock with the current time if current user edited the changeset before.
- WP_Customize_Manager::set_changeset_lock()Marks the changeset post as being currently edited by the current user.
- WP_Customize_Nav_Menus::save_nav_menus_created_posts()Publishes the auto-draft posts that were created for nav menu items.
- WP_Embed::shortcode()The do_shortcode() callback function.
- WP_Post::__get()Getter.
- WP_Privacy_Policy_Content::_policy_page_updated()Updates the cached policy info when the policy page is updated.
- WP_Privacy_Policy_Content::get_suggested_policy_text()Checks for updated, added or removed privacy policy information from plugins.
- WP_Privacy_Policy_Content::text_change_check()Performs a quick check to determine whether any privacy info has changed.
- WP_REST_Attachments_Controller::edit_media_item()Applies edits to a media item and creates a new attachment record.
- WP_REST_Attachments_Controller::get_sideloaded_file_names()Returns the file names which a finalize request may store for an attachment.
Show all 50
- WP_REST_Attachments_Controller::prepare_item_for_response()Prepares a single attachment output for response.
- WP_User_Request::__construct()Constructor.
- _block_bindings_post_meta_get_value()Gets value for Post Meta source.
- _build_block_template_result_from_post()Builds a unified template object based a post Object.
- _wp_before_delete_font_face()Deletes associated font files when a font face is deleted.
- _wp_copy_post_meta()Copy post meta for the given key from one post to another.
- _wp_menu_item_classes_by_context()Adds the class property classes for the current context, if applicable.
- _wp_preview_meta_filter()Filters preview post meta retrieval to get values from the autosave.
- _wp_privacy_send_erasure_fulfillment_notification()Notifies the user when their erasure request is fulfilled.
- _wp_privacy_send_request_confirmation_notification()Notifies the site administrator via email when a request is confirmed.
- apply_block_hooks_to_content_from_post_object()Run the Block Hooks algorithm on a post object's content.
- edit_form_image_editor()Displays the image and editor in the post editor
- edit_post()Updates an existing post with values provided in `$_POST`.
- get_attached_file()Retrieves attached file path based on attachment ID.
- get_attachment_fields_to_edit()Retrieves the attachment fields to edit form fields.
- get_custom_logo()Returns a custom logo, linked to home unless the theme supports removing the link on the home page.
- get_header_image_tag()Creates image tag markup for a custom header image.
- get_media_states()Retrieves an array of media states from an attachment.
- get_page_template_slug()Gets the specific template filename for a given post.
- get_post_custom()Retrieves post meta fields, based on post ID.
- get_post_states()Retrieves an array of post states from a post.
- get_post_status()Retrieves the post status based on the post ID.
- get_post_thumbnail_id()Retrieves the post thumbnail ID.
- get_the_modified_author()Retrieves the author who last edited the current post.
- get_uploaded_header_images()Gets the header images uploaded for the active theme.
- inject_ignored_hooked_blocks_metadata_attributes()Inject ignoredHookedBlocks metadata attributes into a template or template part.
- map_meta_cap()Maps a capability to the primitive capabilities required of the given user to satisfy the capability being checked.
- media_upload_form_handler()Handles form submissions for the legacy media uploader.
- post_submit_meta_box()Displays post submit form fields.
- post_thumbnail_meta_box()Displays post thumbnail meta box.
- render_block_core_cover()Renders the `core/cover` block on server.
- render_block_core_footnotes()Renders the `core/footnotes` block on the server.
- render_block_core_media_text()Renders the `core/media-text` block on server.
- update_ignored_hooked_blocks_postmeta()Updates the wp_postmeta with the list of ignored hooked blocks where the inner blocks are stored as post content.
- update_menu_item_cache()Updates post and term caches for all linked objects for a list of menu items.
- upgrade_160()Execute changes made in WordPress 2.0.
- wp_ajax_crop_image()Handles cropping an image via AJAX.
- wp_ajax_save_attachment()Handles updating attachment attributes via AJAX.
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.
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.