On this page
delete_metadata_by_mid( string $meta_type, int $meta_id ): bool
Deletes metadata by meta ID.
Parameters
$meta_typestring Required-
Type of object metadata is for. Accepts
'post','comment','term','user', or any other object type with an associated meta table. $meta_idint Required-
ID for a specific meta row.
Return
bool True on successful delete, false on failure.
Source
File: wp-includes/meta.php. View all references
function delete_metadata_by_mid( $meta_type, $meta_id ) {
global $wpdb;
// Make sure everything is valid.
if ( ! $meta_type || ! is_numeric( $meta_id ) || floor( $meta_id ) != $meta_id ) {
return false;
}
$meta_id = (int) $meta_id;
if ( $meta_id <= 0 ) {
return false;
}
$table = _get_meta_table( $meta_type );
if ( ! $table ) {
return false;
}
// Object and ID columns.
$column = sanitize_key( $meta_type . '_id' );
$id_column = ( 'user' === $meta_type ) ? 'umeta_id' : 'meta_id';
/**
* Short-circuits deleting metadata of a specific type by meta ID.
*
* The dynamic portion of the hook name, `$meta_type`, refers to the meta object type
* (post, comment, term, user, or any other type with an associated meta table).
* Returning a non-null value will effectively short-circuit the function.
*
* Possible hook names include:
*
* - `delete_post_metadata_by_mid`
* - `delete_comment_metadata_by_mid`
* - `delete_term_metadata_by_mid`
* - `delete_user_metadata_by_mid`
*
* @since 5.0.0
*
* @param null|bool $delete Whether to allow metadata deletion of the given type.
* @param int $meta_id Meta ID.
*/
$check = apply_filters( "delete_{$meta_type}_metadata_by_mid", null, $meta_id );
if ( null !== $check ) {
return (bool) $check;
}
// Fetch the meta and go on if it's found.
$meta = get_metadata_by_mid( $meta_type, $meta_id );
if ( $meta ) {
$object_id = (int) $meta->{$column};
/** This action is documented in wp-includes/meta.php */
do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
// Old-style action.
if ( 'post' === $meta_type || 'comment' === $meta_type ) {
/**
* Fires immediately before deleting post or comment metadata of a specific type.
*
* The dynamic portion of the hook name, `$meta_type`, refers to the meta
* object type (post or comment).
*
* Possible hook names include:
*
* - `delete_postmeta`
* - `delete_commentmeta`
* - `delete_termmeta`
* - `delete_usermeta`
*
* @since 3.4.0
*
* @param int $meta_id ID of the metadata entry to delete.
*/
do_action( "delete_{$meta_type}meta", $meta_id );
}
// Run the query, will return true if deleted, false otherwise.
$result = (bool) $wpdb->delete( $table, array( $id_column => $meta_id ) );
// Clear the caches.
wp_cache_delete( $object_id, $meta_type . '_meta' );
/** This action is documented in wp-includes/meta.php */
do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
// Old-style action.
if ( 'post' === $meta_type || 'comment' === $meta_type ) {
/**
* Fires immediately after deleting post or comment metadata of a specific type.
*
* The dynamic portion of the hook name, `$meta_type`, refers to the meta
* object type (post or comment).
*
* Possible hook names include:
*
* - `deleted_postmeta`
* - `deleted_commentmeta`
* - `deleted_termmeta`
* - `deleted_usermeta`
*
* @since 3.4.0
*
* @param int $meta_id Deleted metadata entry ID.
*/
do_action( "deleted_{$meta_type}meta", $meta_id );
}
return $result;
}
// Meta ID was not found.
return false;
}
Hooks
- do_action( "deleted_{$meta_type}meta",
int $meta_id ) -
Fires immediately after deleting post or comment metadata of a specific type.
- do_action( "deleted_{$meta_type}_meta",
string[] $meta_ids ,int $object_id ,string $meta_key ,mixed $_meta_value ) -
Fires immediately after deleting metadata of a specific type.
- do_action( "delete_{$meta_type}meta",
int $meta_id ) -
Fires immediately before deleting post or comment metadata of a specific type.
- do_action( "delete_{$meta_type}_meta",
string[] $meta_ids ,int $object_id ,string $meta_key ,mixed $_meta_value ) -
Fires immediately before deleting metadata of a specific type.
- apply_filters( "delete_{$meta_type}_metadata_by_mid",
null|bool $delete ,int $meta_id ) -
Short-circuits deleting metadata of a specific type by meta ID.
Related
Uses
| Uses | Description |
|---|---|
| wp_cache_delete() wp-includes/cache.php | Removes the cache contents matching key and group. |
| wpdb::delete() wp-includes/class-wpdb.php | Deletes a row in the table. |
| _get_meta_table() wp-includes/meta.php | Retrieves the name of the metadata table for the specified object type. |
| get_metadata_by_mid() wp-includes/meta.php | Retrieves metadata by meta ID. |
| sanitize_key() wp-includes/formatting.php | Sanitizes a string key. |
| apply_filters() wp-includes/plugin.php | Calls the callback functions that have been added to a filter hook. |
| do_action() wp-includes/plugin.php | Calls the callback functions that have been added to an action hook. |
Used By
| Used By | Description |
|---|---|
| wp_delete_site() wp-includes/ms-site.php | Deletes a site from the database. |
| wp_xmlrpc_server::set_term_custom_fields() wp-includes/class-wp-xmlrpc-server.php | Set custom fields for a term. |
| wpmu_delete_user() wp-admin/includes/ms.php | Delete a user from the network and remove from all sites. |
| wp_delete_user() wp-admin/includes/user.php | Remove user and optionally reassign posts and links to another user. |
| delete_meta() wp-admin/includes/post.php | Deletes post meta data by meta ID. |
| do_enclose() wp-includes/functions.php | Checks content for video and audio links to add as enclosures. |
| wp_delete_term() wp-includes/taxonomy.php | Removes a term from the database. |
| wp_delete_attachment() wp-includes/post.php | Trashes or deletes an attachment. |
| wp_delete_post() wp-includes/post.php | Trashes or deletes a post or page. |
| wp_xmlrpc_server::set_custom_fields() wp-includes/class-wp-xmlrpc-server.php | Set custom fields for post. |
| wp_delete_comment() wp-includes/comment.php | Trashes or deletes a comment. |
Changelog
| Version | Description |
|---|---|
| 3.3.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/functions/delete_metadata_by_mid