一次更改多个帖子的帖子状态的有效方法是什么?

时间:2014-03-27 作者:Josh Vickerson

我正在寻找一种有效的方法来同时更改多个帖子的帖子状态。我有一个自定义的帖子类型,我用它来存储内容,这些内容在发布之前必须经过版主的批准。我试图让版主能够在相当多的帖子上“全部批准”或“全部拒绝”(100-200条很常见)。

我想到的最好的解决方案是进行ajax调用,将帖子id列表发送到服务器,服务器通过调用以下函数循环它们:

wp_update_post(array(\'ID\'=> $post_id, \'post_status\' => \'publish\' ))
然而,这会导致对每个帖子的DB进行查询,这比我希望的要慢得多。理想情况下,我可以一次对列表中的所有帖子ID进行查询,将帖子状态更改为“发布”,但我找不到任何方法来实现这一点。

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

你所做的是安全的方式,也是我推荐的方式。据我所知,在$wpdb->posts 表,所以您需要编写自己的SQL。。。

$ids = array(); // your IDs; I am assuming these to be validated and sanitized
$wpdb->query("UPDATE {$wpdb->posts} SET post_status = \'publish\' WHERE ID IN  (".implode(\',\',$ids)).")");
你也可以这样做$wpdb->update 但我很少使用这种方法,所以我不确定。(下面的注释表明这是不可能的。)如果你想的话,检查一下抄本并玩一下。

I would recommend not doing either, 尽管如此,并继续使用wp_update_post. 如果您跳过了核心功能,那么您也会跳过许多操作和过滤器,并可能在以后导致意外后果或其他挫折。

结束