按序列化元值删除帖子元

时间:2020-05-26 作者:Peps

我有一些帖子元条目,我想从数据库中删除。delete\\u post\\u meta()函数似乎是可行的:

delete_post_meta( int $post_id, string $meta_key, mixed $meta_value = \'\' )
问题是:我有许多具有相同meta\\u键的条目,所以我想通过meta\\u值指定要删除的行。但是,meta\\u值是序列化数据。那么我如何使用delete_post_meta() 要按专用数据的特定值删除post\\u meta吗?

例如,序列化数据:

a:6:{s:2:"id";s:1:"1";s:4:"name";s:3:"PM1";s:5:"email";s:19:"test+1@test.com";s:3:"url";s:24:"https://example.nl/";s:4:"paid";s:1:"0";s:4:"city";s:9:"amsterdam";}
如何按序列化ID值删除?

1 个回复
最合适的回答,由SO网友:Yash Tiwari 整理而成

请尝试以下代码以特定值的专用数据删除post\\u meta:

$args = array(
    \'post_type\' => \'post\',
    \'meta_key\' => \'any-meta-key\',
    \'posts_per_page\' => -1
 );

$query = new WP_Query( $args );
if($query->have_posts()){
    while($query->have_posts()){
        $query->the_post();
        $get_ID = get_post_meta($post->ID, \'any-meta-key\', true);

        // Change the id value that you want to delete 
        if ( !empty($get_ID[\'id\']) && $get_ID[\'id\'] == \'1\' ) {
            delete_post_meta($post->ID,\'any-meta-key\',$get_ID);
        }
    }
}
不要忘记使用元密钥更新测试元密钥。