Wordpress wp_update_post没有正确更新状态

时间:2013-12-08 21:39:31

标签: wordpress

我正在尝试以编程方式创建和更新从界面到Wordpress的自定义帖子类型。 我有以下代码,一切正常,除了已发布/预定状态:

wp_update_post(
    array(
        'ID' => $id,
        'post_title' => $page_title,
        'post_excerpt' => $page_excerpt,
        'post_content' => $page_content,
        'edit_date' => true,
        'post_date' => $publish_date,
        'post_status' => ( strtotime( $publish_date ) > time( ) ? 'future' : 'publish' )
    )
);

使用wp_insert_post创建帖子时,这似乎正确设置状态(使用与上面相同的逻辑),但在更新日期(并相应地设置状态)时,状态永远不会改变。

e.g。如果在未来6个月创建帖子,则将其设置为已安排。如果该帖子过去使用post_date更新,则日期会更新,但状态仍会设置为已安排。

我已经读过你需要将edit_date设置为true以使其正常工作,但我已经尝试过,但仍然没有运气。

我有什么遗失的吗?

提前感谢您的帮助。

此致

PhilHalf

1 个答案:

答案 0 :(得分:3)

您可以尝试一下(post_date_gmt已添加)

$status = strtotime($publish_date) > strtotime('today') ? 'future' : 'publish';
wp_update_post(
    array(
        'ID' => $id,
        'post_title' => $page_title,
        'post_excerpt' => $page_excerpt,
        'post_content' => $page_content,
        'edit_date' => true,
        'post_date' => $publish_date,
        'post_status' => $status,
        'post_date_gmt' => gmdate( 'Y-m-d H:i:s', strtotime($publish_date) )
    )
);

看看this answer