web-dev-qa-db-ja.com

DOING_AUTOSAVE時に$ post_idを返しますか?

私は次のパターンを何度も繰り返して見ます、 このサイトで そして他の場所で:

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はアクションであり、 アクションハンドラの戻り値は無視されます 。 WordPressのコア自体は やらない

コーデックスの例 $post_id を返しますが、コーデックスの最初の不正な(または古い)行ではありません。

私は何かが足りないのですか? $post_idを返す必要がありますか?これが必要な時はありましたか?

8
Jan Fabry

'save_post'アクションは 2.0でcoreに追加された であり、常にアクションでした。現在の自動保存手順を見ると、いつでも直接'save_post'アクションを呼び出すようには見えません。

短い答えはノーです。このアクションで値を返す理由はありません。また、これまでに発生したこともありません。もちろん、投稿IDを返しても問題ありません。

5
John P Bloch

戻り値では何もしていないので、投稿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 ...

}
6
Geert