如何删除没有分配精选图片的所有帖子?

时间:2017-10-27 19:45:22

标签: wordpress jquery-plugins

这可以找到所有这些:

$args = array(
  'meta_query' => array(
     array(
       'key' => '_thumbnail_id',
       'value' => '?',
       'compare' => 'NOT EXISTS'
     )
  ),
);
$new_query = new WP_Query( $args );

如何制作迷你插件,当我激活它时,它会删除所有帖子而不分配特色图片?

我在尝试:

add_action( 'init', 'process_posts' );

function process_posts() {

    $args = array(
      'meta_query' => array(
         array(
           'key' => '_thumbnail_id',
           'value' => '?',
           'compare' => 'NOT EXISTS'
         )
      ),
    );

    $new_query = new WP_Query( $args );
     if (empty($_thumbnail_id)) {
       wp_delete_post($_POST['post_id'], true);
}
}

有人可以给我看这个吗?感谢

2 个答案:

答案 0 :(得分:1)

以下是您可以使用的钩子的一些示例代码,您需要编写自己的循环代码来删除帖子。

add_action( 'init', 'process_posts' );

function process_posts() {

    $args = array(
      'meta_query' => array(
         array(
           'key' => '_thumbnail_id',
           'value' => '?',
           'compare' => 'NOT EXISTS'
         )
      ),
    );

    $new_query = new WP_Query( $args );

    // Delete your posts here with a loop

}

答案 1 :(得分:1)

您可以使用Wordpress功能wp_delete_post()删除帖子。为每个循环创建一个获取帖子ID并将其传递给wp_delete_post()的循环。我将此代码添加到我的functions.php文件中,并按预期工作。因为你有很多帖子,所以可能需要一些时间来执行。您需要在setTimeout文件中调整php.ini,这需要很长时间。希望有所帮助!

$args = array(
  'meta_query' => array(
     array(
       'key' => '_thumbnail_id',
       'value' => '?',
       'compare' => 'NOT EXISTS'
     )
  ),
);


$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        $post_id = get_the_ID();
        wp_delete_post($post_id);
    }
    wp_reset_postdata();
}