问题描述
我反复看到以下模式,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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。