2013-12-08 61 views
1

我試圖以編程方式創建和更新從一個界面到Wordpress的自定義帖子類型。 我有以下的代碼,一切工作,除了發佈/預定狀態:WordPress的wp_update_post沒有正確更新狀態

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後,這似乎是正確的設置狀態(使用相同的邏輯如上),但是當更新日期(並相應地設置狀態),狀態不會改變。

例如如果帖子是在未來6個月內創建的,則會設置爲預定。如果該帖子過去使用post_date進行更新,則會更新日期,但狀態仍設置爲預定。

我讀過你需要將edit_date設置爲true才能正常工作,但我已經試過了,但仍然沒有運氣。

有什麼我失蹤了嗎?

在此先感謝您的幫助。

問候,

PhilHalf

回答

2

你可以試試看(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

+0

這似乎已經做到了!非常感謝你。 – PhilHalf

+0

歡迎@PhilHalf。很高興幫助:-) –