在DOING_AUTOSAVE时返回$ post_id?


8

在该站点以及其他地方一遍又一遍地看到以下模式:

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是一个动作,并且忽略动作处理程序的返回值。WordPress核心本身也不做

Codex示例确实返回$post_id,但它不是Codex 中的第一行错误(或过时)行。

我想念什么吗?我需要返回$post_id吗?有需要的时候吗?


作为参考,这里是将其早期版本引入Codex的编辑。我无法识别登录名,您可以尝试找人问(如果有兴趣的话)。
罗斯特2011年

Answers:


5

'save_post'动作已添加到2.0的核心中,并且一直是一项动作。查看当前的自动保存过程,似乎无法随时'save_post'直接调用该操作。

所以简短的答案是,不。没有理由,也从来没有任何理由返回此操作的任何值。当然,返回帖子ID完全没有伤害。


7

由于返回值没有做任何事情,因此返回帖子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 ...

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.