2013-04-03 15 views
1

我有一個自定義函數,可以與我的自定義帖子類型一起使用。雖然porocessing save_post行動:wordpress將post_status設置爲「save_post」動作中的「草稿」

add_action('save_post', 'my_custom_function'); 

我想設置後的狀態爲草稿(與從外部API獲取自定義的數據出現問題的情況下)。 在我my_custom_function功能我有這個小方塊:

if ($error == true) { 
    $override_post = array(); 
    $override_post['ID'] = $post_id; 
    $override_post['post_status'] = 'draft'; 
    wp_update_post($override_post); 
} 

但似乎,這save_post正在被處理後,再post_status被重新設置。

任何人有一個想法,我應該在哪裏掛到,所以在保存後的數據,我可以讓他們不被overriten修改其post_statuspost_date和其他一些POST數據信息?

回答

3

你應該把它掛到wp_insert_post_data。然後你可以使用這樣的功能來設置你的發佈狀態爲草稿:

add_filter('wp_insert_post_data', 'set_post_to_draft', 99, 2); 

function set_post_to_draft($data, $postarr) { 

    if (your_condition) { 
    $data['post_status'] = 'draft'; 
    } 

    return $data; 
} 
+0

有沒有辦法在函數調用中使用自定義參數做同樣的事情? –

+0

沒關係,只需要用post_meta發送一個正確的變量。 –

+0

嗯。看來這種方法產生了一個問題。如果用戶只打開new-post.php但不保存它 - 創建的自動保存草稿不能由wordpress管理(該函數不僅在保存時而且在打開post-new.php時都會推送'post_status' ')。 –