我正在尝试以编程方式创建和更新从界面到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
答案 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。