Kembalikan $ post_id saat DOING_AUTOSAVE?

8

Saya melihat pola berikut berulang kali, di situs ini dan di tempat lain:

add_action( 'save_post', 'wpse14169_save_post' );
function wpse14169_save_post( $post_id )
{
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }
    // Other code...
}

Kenapa saya harus kembali $post_id? save_postadalah tindakan, dan nilai balik dari penangan tindakan diabaikan . Inti WordPress itu sendiri juga tidak melakukannya .

Contoh Codex memang mengembalikan baris$post_id , tetapi itu bukan baris pertama yang salah (atau kedaluwarsa) dalam Codex.

Apakah saya melewatkan sesuatu? Apakah saya perlu kembali $post_id? Apakah ada saat ketika ini dibutuhkan?

Jan Fabry
sumber
Untuk referensi di sini adalah edit yang memperkenalkan versi awal ini ke Codex . Saya tidak mengenali login, Anda bisa mencoba untuk mencari orang dan bertanya (jika itu tertarik).
Rarst

Jawaban:

5

The 'save_post'tindakan yang ditambahkan ke inti dalam 2.0 , dan selalu menjadi tindakan. Melihat melalui prosedur penyimpanan otomatis saat ini, sepertinya tidak memanggil 'save_post'tindakan secara langsung kapan saja.

Jadi jawaban singkatnya adalah, tidak. Tidak ada alasan, dan tidak pernah ada alasan, untuk mengembalikan nilai apa pun atas tindakan ini. Tentu saja, tidak ada salahnya untuk mengembalikan id posting.

John P Bloch
sumber
7

Karena tidak ada yang dilakukan dengan nilai pengembalian, mengembalikan ID pos tidak ada gunanya dan tidak boleh dilakukan. Ini hanya menyediakan ruang untuk kebingungan.

Baru saja mencobanya, save_posttindakan berikut berfungsi dengan baik.

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 ...

}
Geert
sumber