Php 基于元字段值以编程方式删除Wordpress帖子

Php 基于元字段值以编程方式删除Wordpress帖子,php,wordpress,custom-post-type,Php,Wordpress,Custom Post Type,如果WordPress post的自定义字段有某个值,我想删除它。“mls”是字段的id,例如185897是值。但是,如果我运行此脚本,它将删除具有给定帖子类型的所有帖子。我还尝试了“元查询”而不是“元输入”,但结果是一样的 你知道我错过了什么吗 $delete_post = array( 'post_type' => 'estate_property', 'post_status' => 'publish', 'meta_input' => ar

如果WordPress post的自定义字段有某个值,我想删除它。“mls”是字段的id,例如185897是值。但是,如果我运行此脚本,它将删除具有给定帖子类型的所有帖子。我还尝试了“元查询”而不是“元输入”,但结果是一样的

你知道我错过了什么吗

$delete_post = array(
    'post_type'   => 'estate_property',
    'post_status' => 'publish',
    'meta_input'  => array(
       'mls' => 185897
    )
);

$posts = new WP_Query( $delete_post );

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
         wp_delete_post( get_the_ID());
    }
}  


这样行吗?

注意,我添加了“numberposts”。WordPress一次只能检索5篇文章(默认情况下)。如果你想要所有这些,只需传递-1。谢谢你,你提供的第一个例子工作得很好!(我认为有一个额外的结束括号)
'meta\u input'
对于复合搜索应该是
'meta\u query'
,或者简单地
'meta\u key'
'meta\u value'
。。。因此,当您运行WP_查询时,它将查找所有具有post类型“estate_property”和post状态“publish”的帖子。请参见下面的解决方案。
$delete_post = array(
    'numberposts' => -1,    // The number of posts to retrieve, otherwise 5
    'post_type'   => 'estate_property',
    'post_status' => 'publish',
    'meta_query' => array(
        array(
            'key' => 'mls',
            'value' => '185897'
        )
    )
);
$delete_post = array(
    'numberposts' => -1,    // The number of posts to retrieve, otherwise 5
    'post_type'   => 'estate_property',
    'post_status' => 'publish',
    'meta_key' => 'mls',
    'meta_value' => '185897',
);