Wp_trash_post()将POST复制到垃圾桶

时间:2019-11-13 作者:Kevin S

我想把一个帖子转到循环中的垃圾站。这是我的代码;

function run_every_five_minutes() {
    global $post;
    $wp_query = new WP_Query(array(\'cat\' => array(1), \'posts_per_page\' => -1, \'date_query\'=>array(\'after\' => \'2 hours ago\', \'inclusive\' => true)));
    $post_id = get_the_ID();
    if ( $wp_query->have_posts() ) {
            while ($wp_query->have_posts()) : $wp_query->the_post();
                    wp_trash_post($post_id);
            endwhile;
    }
}
有了这个功能,我可以将一篇帖子移动到thrash,但该帖子仍会列在管理面板(所有帖子部分)上,也会显示在垃圾桶中。如何将其完全移除?

Edit: 这个职位是私人的

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

正如函数名所示,wp_trash_post() 仅垃圾帖子。如果您想将帖子完全删除,则可以使用wp_delete_post( int $postid, bool $force_delete = false ) 相反

https://developer.wordpress.org/reference/functions/wp_delete_post/

当文章和页面被永久删除时,与之相关的所有内容也会被删除。这包括评论、帖子元字段和与帖子相关的术语。

除非禁用垃圾箱、项目已在垃圾箱中或$force\\u delete为true,否则帖子或页面将移至垃圾箱而不是永久删除。

<小时>

EDIT 14.11.2019

也许WP只是发疯了,因为你正在使用wp_trash_post 同样的$post_idwhile 环也许您可以测试以下函数之一,这是我根据您的代码编写的,具体取决于您是要删除单个还是所有匹配的帖子。

function run_every_five_minutes_delete_one_matched_post() {
  global $post;
  if ( empty($post->ID) ) {
    return;
  }
  $wp_query = new WP_Query(
    array(
      \'p\'                      => $post->ID, // query only for this particular post
      \'date_query\'             => array(
        \'after\'                => \'2 hours ago\', 
        \'inclusive\'            => true
      ),
      \'no_found_rows\'          => true,
      \'update_post_meta_cache\' => false,
      \'update_post_term_cache\' => false,
      \'fields\'                 => \'ids\' // no need to query all of the post data
    )
  );
  if ($wp_query->posts) {
    wp_delete_post($post->ID, true); // second parameter true bypasses trash and force deletes the post
  }  
}

function run_every_five_minutes_delete_all_matched_posts() {
  $wp_query = new WP_Query(
    array(
      \'cat\'                    => array(1), 
      \'posts_per_page\'         => -1,
      \'date_query\'             => array(
        \'after\'                => \'2 hours ago\', 
        \'inclusive\'            => true
      ),
      \'no_found_rows\'          => true,
      \'update_post_meta_cache\' => false,
      \'update_post_term_cache\' => false,
      \'fields\'                 => \'ids\'
    )
  );
  if ($wp_query->posts) {
    array_walk($wp_query->posts, function($post_id){
      wp_delete_post($post_id, true); // second parameter true bypasses trash and force deletes the post
    });
  }
}

相关推荐

Create posts inside CPT post

在CPT中,每个帖子承载多个帖子,并使用自定义URL访问它们。自定义帖子类型:序列创建具有序列标题的帖子:abc、xyz等现在,这就是我需要创建的内容,在我想要创建帖子的每个序列(abc、xyz)中。然后使用自定义URL访问主题访问所有序列:http://localhost/serial/访问标题为的序列号:http://localhost/serial/abc/访问剧集:http://localhost/serial/abc/episode-1 &;http://localhost/serial/