Last updated Feb 17, 2022


Deletes the value of a specific field.


delete_field($selector, [$post_id]);
  • $selector (string) (Required) The field name or field key.
  • $post_id (mixed) (Optional) The post ID where the value is saved. Defaults to the current post.


(bool) True on successful delete, false on failure.


Delete via field name

This example shows how to delete the value of a field called ‘test’ on the current post being viewed.

// Delete value.

Delete via field key

This example shows how to achieve the same as above using the field’s key instead of its name.

// Delete value.

Delete a value from different objects

This example shows a variety of $post_id values to delete a value from a post, user, term and option.

$post_id = false; // current post
$post_id = 1; // post ID = 1
$post_id = "user_2"; // user ID = 2
$post_id = "category_3"; // category term ID = 3
$post_id = "event_4"; // event (custom taxonomy) term ID = 4
$post_id = "option"; // options page
$post_id = "options"; // same as above

delete_field( 'my_field', $post_id );

Delete from multiple posts

This example shows how load all posts that contain a custom field (called ‘color’) and then delete those values from each post. Note that the foreach loop uses a variable called $p instead of $post to avoid any collisions with the global $post object.

// Query posts.
$posts = get_posts(array(
    'post_type'         => 'post',
    'posts_per_page'    => -1,
    'meta_key'          => 'color'

// Loop over results and delete.
if( $posts ) {
    foreach( $posts as $p ) {
        delete_field('color', $p->ID);