The delete_{$meta_type}meta WordPress action fires immediately before deleting metadata of a specific type for a post, comment, term, or user.
Usage
add_action('delete_postmeta', 'your_custom_function'); function your_custom_function($meta_id) { // your custom code here }
Parameters
- $meta_id (int): ID of the metadata entry to delete.
More information
See WordPress Developer Resources: delete_{$meta_type}meta
Examples
Log deleted post metadata
Logs deleted post metadata to a custom log file.
add_action('delete_postmeta', 'log_deleted_postmeta'); function log_deleted_postmeta($meta_id) { // Get metadata by ID $meta = get_metadata_by_mid('post', $meta_id); // Create log entry $log_entry = "Deleted post meta: ID {$meta_id}, key {$meta->meta_key}, value {$meta->meta_value}" . PHP_EOL; // Append to log file file_put_contents('postmeta_deletion.log', $log_entry, FILE_APPEND); }
Prevent deletion of specific post metadata
Prevents deletion of a specific post metadata key.
add_action('delete_postmeta', 'prevent_specific_postmeta_deletion', 10, 1); function prevent_specific_postmeta_deletion($meta_id) { // Define metadata key to protect $protected_key = 'protected_meta_key'; // Get metadata by ID $meta = get_metadata_by_mid('post', $meta_id); // Check if it's the protected key and cancel deletion if ($meta->meta_key === $protected_key) { wp_die('You cannot delete this protected metadata.'); } }
Notify admin on comment metadata deletion
Sends an email notification to the admin when comment metadata is deleted.
add_action('delete_commentmeta', 'notify_admin_on_commentmeta_deletion'); function notify_admin_on_commentmeta_deletion($meta_id) { // Get metadata by ID $meta = get_metadata_by_mid('comment', $meta_id); // Prepare email content $subject = "Comment Metadata Deleted"; $message = "Comment metadata with ID {$meta_id} has been deleted. Key: {$meta->meta_key}, Value: {$meta->meta_value}"; // Send email to admin wp_mail(get_option('admin_email'), $subject, $message); }
Clean up related data on term metadata deletion
Deletes additional custom data related to the deleted term metadata.
add_action('delete_termmeta', 'clean_up_related_data_on_termmeta_deletion'); function clean_up_related_data_on_termmeta_deletion($meta_id) { // Get metadata by ID $meta = get_metadata_by_mid('term', $meta_id); // Check if it's the custom key and clean up related data if ($meta->meta_key === 'custom_term_meta_key') { delete_option("custom_option_{$meta_id}"); } }
Increment user metadata deletion counter
Increments a counter for the number of times user metadata has been deleted.
add_action('delete_usermeta', 'increment_usermeta_deletion_counter'); function increment_usermeta_deletion_counter($meta_id) { // Get current counter value $counter = get_option('usermeta_deletion_counter', 0); // Increment and update counter $counter++; update_option('usermeta_deletion_counter', $counter); }