当前浏览:首页 / WordPress函数 / delete_post_meta()

delete_post_meta( int $post_id, string $meta_key, mixed $meta_value = '' )

删除给定文章ID的文章meta字段

deletemore...

post_meta 文章meta


描述

可以根据键或键和值进行匹配。基于键和值删除将阻止删除具有相同键的重复meta数据。如果需要,它还允许删除与key匹配的所有meta数据。


参数

$post_id

(int)(必填) 文章ID

$meta_key

(string)(必填) meta数据名称。

$meta_value

(mixed)(可选) meta数据值。如果提供,将仅删除与该值匹配的行。如果不是标量,则必须是可序列化的。

默认值: ''


返回

(bool) 成功时为true,失败时为false。



源码

查看源码 官方文档


更新日志

版本描述
1.5.0开始引入

使用示例

  • 示例1

    默认用法

    <?php delete_post_meta(76, 'my_key', 'Steve'); ?>
    
    
  • 示例2

    其他示例
    让我们假设我们有一个插件,该插件向文章添加了一些meta值,但现在当我们卸载该插件时,我们希望删除该插件添加的所有文章meta键。假设插件添加了键related_postspost_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' );
      }
    ?>
    
    
  • 示例3

    使用此函数删除特定的键值对时要非常小心。如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
    }