描述
可以根据键或键和值进行匹配。基于键和值删除将阻止删除具有相同键的重复meta数据。如果需要,它还允许删除与key匹配的所有meta数据。
参数
- $post_id
-
(int)(必填) 文章ID
- $meta_key
-
(string)(必填) meta数据名称。
- $meta_value
-
(mixed)(可选) meta数据值。如果提供,将仅删除与该值匹配的行。如果不是标量,则必须是可序列化的。
默认值: ''
返回
(bool) 成功时为true,失败时为false。
源码
更新日志
版本 | 描述 |
---|---|
1.5.0 | 开始引入 |
使用示例
默认用法
<?php delete_post_meta(76, 'my_key', 'Steve'); ?>
其他示例
让我们假设我们有一个插件,该插件向文章添加了一些meta值,但现在当我们卸载该插件时,我们希望删除该插件添加的所有文章meta键。假设插件添加了键related_posts
和post_inspiration
。要删除所有key,请使用
delete_post_meta_by_key( $post_meta_key )
。这将添加到“卸载”函数中:<?php delete_post_meta_by_key( 'related_posts' ); ?>
或者,如果您想删除除
post_inspiration
是“Sherlock Holmes”之外的所有key:<?php $allposts = get_posts( 'numberposts=-1&post_type=post&post_status=any' ); foreach( $allposts as $postinfo ) { delete_post_meta( $postinfo->ID, 'related_posts' ); $inspiration = get_post_meta( $postinfo->ID, 'post_inspiration' ); foreach( $inspiration as $value ) { if( 'Sherlock Holmes' !== $value ) delete_post_meta( $postinfo->ID, 'post_inspiration', $value ); } } ?>
或者可能文章编号185刚刚被删除,您想删除引用它的所有
related_posts
键:<?php $allposts = get_posts( 'numberposts=-1&post_type=post&post_status=any' ); foreach( $allposts as $postinfo ) { delete_post_meta( $postinfo->ID, 'related_posts', '185' ); } ?>
使用此函数删除特定的键值对时要非常小心。如delete_metadata()的文档中所述,为
$meta_value
提供空字符串将导致完全跳过检查,从而删除所有key!$meta_value…如果指定,则仅删除具有此值的meta数据项。否则,删除具有指定meta_key…的所有条目
为避免意外删除所有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 }