问题描述

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