問題描述
我反覆看到以下模式,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_id? save_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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。