创建自定义POST类型发布循环

时间:2012-11-23 作者:Chris

我想重新发布所有以前发布的自定义帖子类型的产品。假设帖子类型为“事件”

我是这样想的:

$args = array(
\'post_type\' => \'events\',
\'post_status\' => \'publish\', // get only published posts?
\'posts_per_page\' => -1
);
$posts = new WP_Query( $args );
if ( $posts -> have_posts() ) {
while ( $posts -> have_posts() ) {
     wp_publish_post(NEED TO GET ID)
}
}           
wp_reset_query();
我不知道如何在循环中获取id或如何获取刚刚发布的帖子(进行了有根据的猜测)

*已编辑*

$args = array(
\'post_type\' => \'events\',
\'post_status\' => \'publish\', // get only published posts?
\'posts_per_page\' => -1
);
$posts = new WP_Query( $args );
if ( $posts->have_posts() ) {
while ( $posts->have_posts() ) {
    $posts->the_post();
    wp_publish_post($post->ID)
}
} 

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

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
        wp_publish_post($post->ID)
    }
} 
这应该可以做到。你需要打电话给the_post 正确地穿过立柱。它还设置$post 对象

这应该将所有帖子设置为“发布”,这就是wp_publish_post 做我想我不知道你所说的“重新出版”是什么意思。你的意思可能是“更改出版日期”。要做到这一点,您需要使用wp_update_post 并更改post_datepost_date_gmt.

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
        wp_update_post(array(\'ID\'=>$post->ID,\'post_date\'=>\'\',\'post_date_gmt\'=>\'\'))
    }
}
将日期设置为nothing将导致其默认为“now”--刚刚测试过。

如果你想让这些内容再次出现在新闻提要中,那还是不行的。您必须编辑guid 但是doing so is highly discouraged.

此外,我建议您将变量命名为$posts. WordPress使用该名称。您正在删除默认变量。

结束

相关推荐

Wp-content/plugins中的权限问题

我在本地机器上安装了一个WP,试图用插件弄脏我的手。我希望从github克隆一个包含此插件代码的项目。然而,我没有插件内部的权限,作为一个没有su权限的普通用户,我无法做到这一点。(当然,我可以成为根并这样做,但我不认为这是应该的)。然后,默认情况下,WP安装中的文件夹将组设置为“tape”,这对我来说很奇怪。本地WP安装上内部文件夹的正确权限应该是什么?