参数
$meta_type
string必填-
对象元数据的类型为。接受
'post'
、'comment'
、'term'
、'user'
或任何其他具有关联元表的对象类型。 $object_id
int必填-
对象元数据的ID。
$meta_key
string必填-
元数据键。
$meta_value
mixed可选-
元数据值。如果非标量,则必须是可序列化的。
如果已指定,则仅删除具有此值的元数据条目。
否则,删除具有指定meta_key的所有条目。
通过null
、false
或空字符串跳过此检查。
(为了向后兼容,不能传递空字符串来删除值为空字符串的条目。)默认:
''
$delete_all
bool可选-
如果为true,则删除所有对象的匹配元数据条目,忽略指定的object_id。否则,只删除指定object_id的匹配元数据条目。
默认:
false
返回
bool 成功删除时为true,失败时为false。
钩子
- do_action( 'deleted_postmeta',
string[] $meta_ids ) -
删除文章的元数据后立即触发。
- do_action( "deleted_{$meta_type}_meta",
string[] $meta_ids ,int $object_id ,string $meta_key ,mixed $_meta_value ) -
删除特定类型的元数据后立即触发。
- do_action( 'delete_postmeta',
string[] $meta_ids ) -
在删除文章的元数据之前立即触发。
源码
更新日志
版本 | 描述 |
---|---|
2.9.0 | 开始引入 |
使用示例
使用此函数删除特定的键值对时,请非常小心。如前所述,为
$meta_value
提供一个空字符串将导致完全跳过检查,从而删除所有键!$meta_value…如果指定,则仅删除具有此值的元数据条目。否则,删除具有指定meta_key…的所有条目
为避免意外删除所有键实例,请使用短路检查:
$value_to_delete = My_Class::get_value(); // may return empty string if ( $value_to_delete != '' && delete_metadata( 'post', 27, 'key', $value_to_delete ) ) { // the key-value pair was safely deleted }
/* * Remove all post meta data for Custom Post Type (CPT) * at the time of uninstall of plugin that created this CPT. * So that plugin do not leave behind any orphan post meta data * related to its CPT. * * You may place this code in uninstall.php file in your plugin root directory. */ $meta_type = 'post'; // since we are deleting data for CPT $object_id = 0; // no need to put id of object since we are deleting all $meta_key = 'my_meta_key'; // Your target meta_key added using update_post_meta() $meta_value = ''; // No need to check for value since we are deleting all $delete_all = true; // This is important to have TRUE to delete all post meta // This will delete all post meta data having the specified key delete_metadata( $meta_type, $object_id, $meta_key, $meta_value, $delete_all );