Saya terkejut dengan fakta bahwa fungsi saya yang saya tempelkan ke save_post
aksi kebakaran ketika saya mengklik tautan "Posting Baru" di Dashboard Admin. Catatan - ini sebelum saya menekan Saveatau Update, dan langsung menyala, bukan setelah waktu yang berlalu atau pembaruan otomatis.
Di sisi lain, ketika saya kemudian ketik sesuatu dan tekan tombol PublishatauUpdate atau Save Draft, pernyataan gema yang saya letakkan di dalam penangan tindakan saya tidak bergema, sehingga tampak bahwa tindakan TIDAK menembak di waktu lain. Ini mungkin tidak berhubungan.
Ini kode saya:
add_action('save_post', 'MyNS\save_event_metabox', 10, 2);
function save_event_metabox($post_id, $post){
echo "<h1>YES!</h1>";
}
YA ini bergema (di bagian atas halaman) ketika saya menekan tautan "Posting Baru" tetapi TIDAK menggema ketika saya mengetik sesuatu dan kemudian tekan Updateatau Publishatau Save Draft. Ini tampaknya bertentangan dengan dokumentasi padasave_post
aksi dan wp_insert_post()
fungsi.
Adakah yang bisa membersihkan ini untuk saya?
Jawaban:
Ketika Anda mengklik 'Posting Baru', Anda cukup memuat halaman
wp-admin/post-new.php
.Dengan demikian, WordPress akan selalu membuat posting baru ('Draf Otomatis') untuk memastikan semua fitur lain (seperti unggahan media) dan plugin berfungsi seperti biasa, bahkan sebelum Anda benar-benar menyimpan konsep atau mempublikasikan posting.
Dan ini, pada gilirannya, memicu
save_post
. Karena itu gema Anda.Di antara menyimpan dan memuat halaman berikut, WordPress sebenarnya mengirim
GET
redirect kembali ke halaman yang sama, yang tampak transparan (Anda dapat menyaksikan ini dengan monitor HTTP, seperti HttpFox ).Dengan kata lain;
Update
atauPublish
save_post
Redirect mungkin tampak tidak perlu (karena Anda bisa saja
POST
ke halaman yang sama), tetapi itu adalah bagian dari teknik yang dikenal sebagai Post / Redirect / Dapatkan menghindari pengiriman formulir duplikat .Jika Anda mencoba untuk mencetak pesan khusus berdasarkan hasil dari fungsi yang dikaitkan
save_post
, periksa pertanyaan / jawaban ini .* Tidak sepenuhnya benar, gema Anda sebenarnya akan terjadi sebelum header redirect dikirim, tetapi browser akan membuangnya, atau sesuatu terjadi begitu cepat sehingga tidak pernah dirender.
sumber