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).
- Lalu, ada 2 pengait transisi lainnya yang dipecat, tetapi dinamai dinamis, artinya tindakan efektif yang dipecat tergantung pada status kiriman lama dan baru.
"{$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)
- Kait dinamis lain:
"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.
- Akhirnya Anda memiliki '
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
atau wp_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 tambahkan 3
sebagai $accepted_args
param add_action
( lihat dokumen ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
Catatan terakhir mengenai penentuan waktu : Anda harus yakin bahwa add_action
dipanggil sebelum tindakan dipicu, atau tidak akan melakukan apa pun.
Misalnya kode ini:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
tidak akan melakukan apa-apa, karena tindakan ditambahkan setelah kait ditembakkan. Ini sederhana untuk mengenalinya, dalam kode dunia nyata tidak selalu demikian.
save_post
, apakah itu salah ketik di sini, atau apakah itu dalam kode asli Anda? juga, aktifkan debug saat mengembangkan.