更新类别中所有帖子的状态

时间:2015-01-08 作者:Naveed Abbas

对于我的一个项目,我只想将特定类别中所有帖子的状态从发布更改为挂起。

是否可以一次更改多个职位的状态?我想在我正在开发的自定义主题中使用此功能。

谢谢

2 个回复
最合适的回答,由SO网友:gdaniel 整理而成

我相信有一个更简单的方法来实现这一点,但我会这样做。

查询类别为X且状态为X的所有帖子更新状态为Y的查询结果。

$target_category = \'news\';
$change_status_from = \'draft\';
$change_status_to = \'publish\';
$update_query = new WP_Query(array(\'post_status\'=>$change_status_from, \'category_name\'=>$target_category, \'posts_per_page\'=>-1));

if($update_query->have_posts()){

    while($update_query->have_posts()){

        $update_query->the_post();
        wp_update_post(array(\'ID\'=>$post->ID, \'post_status\'=>$change_status_to));

    }

}
您可以将此代码放在页面模板或函数中。php。您可能只需要偶尔运行它。所以我会为它创建一个模板。将其添加到模板中,然后将该模板分配到可能标记为private或draft的特定页面。

SO网友:Jen

也可以在MySQL中使用以下查询执行此操作:

UPDATE tb_posts 
SET post_status = \'pending\' 
WHERE ID IN ( 
    SELECT object_id FROM `tb_term_relationships` 
    WHERE term_taxonomy_id = {your_cat_id} 
)
如果将鼠标悬停在类别页面上的类别上,则可以在URL中看到其ID

结束

相关推荐

Escape current post from loop

我正在创建一个搜索小部件,为此我通过新的WP\\u Query()使用了一个二级循环;$query = new WP_Query(\'s=searchTerm\'); if ($query->have_posts()){ while ($query->have_posts()){ $query->the_post(); //echo the post } wp_reset_postda