The delete_{$meta_type}_metadata_by_mid WordPress PHP filter short-circuits deleting metadata of a specific type by meta ID. The dynamic portion, $meta_type
, refers to the meta object type (post, comment, term, user, or any other type with an associated meta table).
Usage
add_filter( 'delete_post_metadata_by_mid', 'my_custom_function', 10, 2 ); function my_custom_function( $delete, $meta_id ) { // your custom code here return $delete; }
Parameters
$delete
: null|bool – Whether to allow metadata deletion of the given type.$meta_id
: int – Meta ID.
More information
See WordPress Developer Resources: delete_{$meta_type}_metadata_by_mid
Examples
Prevent post metadata deletion for a specific meta ID
Prevents the deletion of post metadata with meta ID 100.
add_filter( 'delete_post_metadata_by_mid', 'prevent_meta_id_100_deletion', 10, 2 ); function prevent_meta_id_100_deletion( $delete, $meta_id ) { if ( $meta_id == 100 ) { return false; } return $delete; }
Allow metadata deletion only for users with a specific capability
Allows metadata deletion only for users with the ‘manage_options’ capability.
add_filter( 'delete_post_metadata_by_mid', 'restrict_meta_deletion_by_capability', 10, 2 ); function restrict_meta_deletion_by_capability( $delete, $meta_id ) { if ( current_user_can( 'manage_options' ) ) { return $delete; } return false; }
Log metadata deletion attempts for a specific meta type
Logs metadata deletion attempts for the ‘post’ meta type.
add_filter( 'delete_post_metadata_by_mid', 'log_meta_deletion_attempts', 10, 2 ); function log_meta_deletion_attempts( $delete, $meta_id ) { error_log( "User attempted to delete post metadata with meta ID: " . $meta_id ); return $delete; }
Prevent metadata deletion for a specific term meta type
Prevents the deletion of term metadata with meta ID 50.
add_filter( 'delete_term_metadata_by_mid', 'prevent_term_meta_id_50_deletion', 10, 2 ); function prevent_term_meta_id_50_deletion( $delete, $meta_id ) { if ( $meta_id == 50 ) { return false; } return $delete; }
Prevent metadata deletion for a specific user meta type
Prevents the deletion of user metadata with meta ID 200.
add_filter( 'delete_user_metadata_by_mid', 'prevent_user_meta_id_200_deletion', 10, 2 ); function prevent_user_meta_id_200_deletion( $delete, $meta_id ) { if ( $meta_id == 200 ) { return false; } return $delete; }