我正在尝试在将来将我的帖子从草稿状态转换为预定状态。下面是我的代码:
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()。
你知道为什么这可以创建一个新帖子,但不能更新一个新帖子吗?