問題描述

我反覆看到以下模式,on this site 和其他地方:

add_action( 'save_post', 'wpse14169_save_post' );
function wpse14169_save_post( $post_id )
{
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }
    // Other code...
}

為什麼要退回 $post_idsave_post 是一種動作,the return value of an action handler is ignored 。 WordPress 核心本身 doesn’t do it either

食典示例確實返回 $post_id,但它不會是 Codex 中第一個不正確 (或過時的) 行。

我錯過了什麼嗎?我需要返回 $post_id 嗎?有沒有一個時間需要這個時間?

最佳解決辦法

'save_post'動作是 added to core in 2.0,一直是一個動作。檢視當前的自動儲存程式,它似乎不會隨時直接呼叫'save_post'動作。

所以簡短的答案是,不。沒有任何理由,從來沒有任何理由返回這一行動的任何價值。當然,它不會傷害到所有返回的帖子 id 。

次佳解決辦法

由於沒有返回值,返回的帖子 ID 是無意義的,不應該完成。它只提供混亂的空間。

剛剛嘗試過,以下 save_post 動作正常。

function my_save_post($post_id)
{
    // Stop WP from clearing custom fields on autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    // Prevent quick edit from clearing custom fields
    if (defined('DOING_AJAX') && DOING_AJAX)
        return;

    // Sanitize, validate and save ...

}

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。