2015-04-17 84 views
1

在WordPress的publish_{post_type}http://codex.wordpress.org/Post_Status_Transitions)你可以鉤入循環,如果一個自定義類型的職位發佈。但publish_{post_type}也是觸發器,如果​​一個職位更新。WordPress的:在提交後檢查是否更新帖子

我基本上正在尋找一種方法來檢查publish_post_type掛鉤中的舊狀態和新狀態。有沒有人有一個漂亮的想法,如何做到這一點?

我這樣做:

function doStuff($post_ID) { 
    // do stuff 
    return $post_ID; 
} 
add_action('publish_ttplaned', 'doStuff'); 

所以基本上我需要檢查機能的研究doStuff()內後的新舊狀態。

+1

'publish_post_type'不是一個WordPress的鉤子......或者你只是指'post_type'作爲你的實際職位類型的佔位符?如果是這樣,我不明白這個問題 – rnevius

+0

@mevius對不起,我正在嘗試{status} _ {post_type}轉換:http://codex.wordpress.org/Post_Status_Transitions – Reborn

回答

0

正如@rnevius所說,WordPress核心中沒有掛鉤,名爲publish_post_type

還有publish_post - 我剛剛對它進行了測試,以確保它僅在帖子首次發佈時運行,而不會在隨後進行編輯時運行。

所以,你可以這樣做:

function my_function($post_ID, $post) { 
    if ("foo" == $post->post_type) { 
    // do something 
    } 
} 

add_action('publish_post', 'my_function', 10, 2); 

也有wp_transition_post_status(),它調用幾個動作:

transition_post_status$new_status$old_status$post

,或者,如果你想反之亦然:

{$old_status}_to_{$new_status}並傳遞一個WP_Post對象作爲唯一參數。

+2

您可以使用{status} _ {post_type}'。所以如果你有一個叫'kittens'的自定義發佈類型,你可以使用''publish_kittens''鉤子。 – rnevius

+0

我編輯了我的問題,希望更清楚我在問什麼:) sry任何混淆:) – Reborn

+1

你應該可以用'{old_status} _to_ {new_status}'鉤子來做你想要的,或者'transition_post_status'? –

1

萬一別人正在尋找aswer。我最終使用威廉姆斯解決方案。

add_action('draft_to_publish', 'doStuff', 10, 1); 
add_action('pending_to_publish', 'doStuff', 10, 1); 
function doStuff($post) { 
    if (get_post_type($post) == "my_custom_post_type"){ 
     // do stuff 
    } 
} 

由於新帖子作爲草稿開始,即使您立即發佈它,此功能也能正常工作。

相關問題