saya mencoba untuk menghubungkan ketika posting diperbarui tetapi semua kait saya coba tidak pernah dijalankan kecuali updated_post_meta
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
Saya sudah mencoba ini add_action('save_post', 'my_function');
tetapi tidak ada id yang di-echo, atau mungkin pesan ini sudah di-echo tetapi tidak pernah di-render karena redirect header dikirim.
save_post
, apakah itu salah ketik di sini, atau apakah itu dalam kode asli Anda? juga, aktifkan debug saat mengembangkan.Jawaban:
Ketika sebuah posting diperbarui ada beberapa kait yang dipecat:
'pre_post_update'
adalah tindakan yang dipecat tepat sebelum posting diperbarui, argumen yang diberikan adalah 2:$post_ID
dan$data
itu adalah array dari semua kolum basis data lain dari tabel posting'transition_post_status'
adalah sebuah hook yang diluncurkan saat pembaruan, dan memberikan 3 argumen: $ new_post_status,$old_post_status
dan$post
(objek)."{$old_status}_to_{$new_status}"
dan"{$new_status}_{$post->post_type}"
. Pertama melewati satu-satunya objek posting sebagai argumen, yang kedua melewati id posting dan objek posting. Temukan dokumentasi di sini .'edit_post'
yang lolos 2 argumen:$post_ID
dan$post
(objek)'post_updated'
yang lulus 3 argumen:$post_ID
,$post_after
(pasca objek setelah update),$post_before
(pasca objek sebelum update)"save_post_{$post->post_type}"
itu tergantung pada jenis posting, misalnya untuk posting standar'save_post_post'
dan untuk halaman ini'save_post_page'
, buku ini lulus 3 argumen:$post_ID
,$post
(object) dan$update
itu adalah boolean (true atau false) itu benar ketika Anda melakukan update, di Bahkan kail ini dipecat juga ketika sebuah pos disimpan untuk pertama kalinya.save_post
' yang diaktifkan saat pembaruan dan penyimpanan pertama, dan memberikan 3 argumen yang sama dari hook sebelumnya.save_post_{$post_type}
' yang diaktifkan saat pembaruan dan penyimpanan pertama, dan meneruskan 2 argumen pertama yang sama dari hook sebelumnya.wp_insert_post
' , yang dipecat saat pembaruan dan penyimpanan pertama, dan meneruskan 3 argumen yang sama dari 2 kait sebelumnya.Hook ini dipecat setiap kali sebuah posting diperbarui, baik melalui halaman admin di backend dan melalui ketika diperbarui "secara manual" menggunakan
wp_update_post
atauwp_insert_post
fungsi.Ketika posting diperbarui menggunakan halaman admin ada kait tambahan yang dipecat, contohnya adalah
'update_post_redirect'
atau'post_updated_messages'
. (Lihat ini dan ini jawaban WPSE untuk contoh penggunaan).Perhatikan bahwa jika Anda ingin menggunakan beberapa argumen hook, itu bukan argumen pertama, Anda harus menyatakannya secara eksplisit
add_action
.Misalnya jika Anda ingin menggunakan
'$update'
argumen (yang ke-3) dari'save_post'
kail yang perlu Anda tambahkan3
sebagai$accepted_args
paramadd_action
( lihat dokumen ):Catatan terakhir mengenai penentuan waktu : Anda harus yakin bahwa
add_action
dipanggil sebelum tindakan dipicu, atau tidak akan melakukan apa pun.Misalnya kode ini:
tidak akan melakukan apa-apa, karena tindakan ditambahkan setelah kait ditembakkan. Ini sederhana untuk mengenalinya, dalam kode dunia nyata tidak selalu demikian.
sumber
function save_post_test( $post_id, $post, $update ) { print ' post_id : '; var_export( $post_id ); print ' post : '; var_export( $post ); print ' update : '; var_export( $update ); wp_die( 'save_post hook runs when you click Add New..' ); } add_action( 'save_post', 'save_post_test', 10, 3 );
Mengapa tindakan 'save_post' berjalan di Add New, bukan di Publish? Untuk membuat posting konsep otomatis saya kira.Mengapa tidak terhubung
post_updated_messages
. Dengan begitu Anda dapat menampilkan pesan ini sama seperti postingan wordpress default yang diperbarui.Cari contoh di sini:
http://codex.wordpress.org/Function_Reference/register_post_type
dibawah
post_updated_messages
sumber