Using WordPress ‘delete_meta()’ PHP function

The delete_meta() WordPress PHP function is used to delete post meta data by using its meta ID.

Usage

The usage of the delete_meta() function is quite straightforward. You just need to pass the meta ID as the parameter. Here’s an example:

delete_meta(123);

In this case, ‘123’ is the meta ID of the post meta data we want to delete.

Parameters

  • $mid (int) – The ID of the meta data you want to delete. It is required.

More information

See WordPress Developer Resources: delete_meta()

This function is a part of WordPress core and is generally not depreciated. The source code can be found in wp-includes/post.php.

Examples

Delete Post Meta

This code deletes a specific post meta by its ID.

// The ID of the meta data we want to delete
$meta_id = 123;

// Delete the post meta data
delete_meta($meta_id);

Delete Multiple Post Metas

This code deletes multiple post metas using their respective IDs.

// The IDs of the meta data we want to delete
$meta_ids = array(123, 124, 125);

// Loop through each ID and delete the corresponding post meta data
foreach ($meta_ids as $id) {
    delete_meta($id);
}

Conditional Deletion of Post Metas

This code deletes a post meta only if it exists.

// The ID of the meta data we want to delete
$meta_id = 123;

// Check if the post meta data exists before deleting
if (metadata_exists('post', $post_id, $meta_key)) {
    delete_meta($meta_id);
}

Delete Post Meta and Handle Errors

This code deletes a post meta and handles any errors that may occur.

// The ID of the meta data we want to delete
$meta_id = 123;

// Try to delete the post meta data and check if it was successful
if (!delete_meta($meta_id)) {
    echo 'Failed to delete post meta data';
} else {
    echo 'Post meta data deleted successfully';
}

Delete Post Meta on Post Deletion

This code deletes a post’s meta data when the post itself is deleted.

// The ID of the post we want to delete
$post_id = 123;

// Delete the post
wp_delete_post($post_id, true);

// Get all the post's meta data
$meta_data = get_post_meta($post_id);

// Delete each meta data
foreach ($meta_data as $meta_id => $meta_value) {
    delete_meta($meta_id);
}