我想重新发布所有以前发布的自定义帖子类型的产品。假设帖子类型为“事件”
我是这样想的:
$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)
}
}
最合适的回答,由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_date
和post_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使用该名称。您正在删除默认变量。