使用wp_UPDATE_POST从草稿过渡到计划发布

时间:2015-01-29 作者:user1048676

我正在尝试在将来将我的帖子从草稿状态转换为预定状态。下面是我的代码:

if($save_as_draft == "yes"){
    $post_status = \'draft\';
    $post_date = date(\'Y-m-d H:i:s\');
}else{
    $future_date_post = $_POST[\'future_date_post\'];
    if($future_date_post=="yes"){
        echo "it is in here";
        $post_status = \'future\';
        $date_time = strtotime($_POST[\'post_date\']);
        $post_date = date(\'Y-m-d H:i:s\', $date_time);
    }else{
        $post_status = \'publish\';
        $post_date = date(\'Y-m-d H:i:s\');
    }
}
$bmt_post = array(
    \'ID\'            => $post_id,
    \'post_title\'    => wp_strip_all_tags( $title ),
    \'post_content\'  => $information,
    \'post_status\'   => $post_status,
    \'post_category\' => array( $cat_ids ),
    \'post_date\' => $post_date,
);
print_r($bmt_post);
$result = wp_update_post( $bmt_post );
if($future_date_post=="yes"){
    wp_schedule_single_event( $date_time, \'publish_future_post\', array( $result ) );
}
我使用的代码与上面完全相同,除了$result = wp_update_post( $bmt_post ); 我正在使用$post_id = wp_insert_post( $bmt_post ); 当我插入一篇新帖子时,它会给出预定状态,一切正常。

然而,如果我将文章从草稿更新到未来,它实际上会给出发布状态,并在其上注明未来日期。当我回显阵列时,我有以下内容:

Array ( [ID] => 6944 [post_title] => Test Post With new name [post_content] => Testing this. Additional stuff here. and more stuff. Does this work? [post_status] => future [post_category] => Array ( [0] => 4 ) [post_date] => 2015-01-31 18:29:00 )

所以你可以看到它试图设置[post_status] => future 但后来发生了一些事情,它被改为“已发布”。

根据《食品法典》的规定,这似乎是可行的:http://codex.wordpress.org/Function_Reference/wp_transition_post_status

然后,法典说:要转换帖子的状态,而不是在帖子状态转换时执行操作,请使用wp\\u update\\u post()或wp\\u publish\\u post()。

你知道为什么这可以创建一个新帖子,但不能更新一个新帖子吗?

1 个回复
SO网友:Craig Pearson

尝试添加edit_date => true 到您的bmt_post 数组,如下所示:

$bmt_post = array(
    \'ID\'            => $post_id,
    \'post_title\'    => wp_strip_all_tags( $title ),
    \'post_content\'  => $information,
    \'post_status\'   => $post_status,
    \'post_category\' => array( $cat_ids ),
    \'post_date\' => $post_date,
    \'edit_date\' => true
);
如果你看看函数wp_update_post 在此处找到:scheduling posts with wp_update_post 您可以看到,如果不设置此参数,调度将无法工作

希望这能解决你的问题?

结束

相关推荐

Pre_Get_Posts或$Where,使用哪一个?

我有一个自定义搜索小部件,它只搜索一个包含大于或等于1的meta\\u键的自定义帖子类型,我在其中收集帖子id。在所有这些帖子id中,我想排除那些具有meta\\u键“\\u start\\u date”(存储方式为01-16-2015)且值>=”search\\u input\\u start\\u date“和meta\\u key“\\u end\\u date”(存储方式为01-16-2015)且值lt=”的帖子类型search\\u input\\u end\\u date\'。我的问题是