Bir yayın güncellendiğinde, ateşlenen bazı kancalar vardır:
'pre_post_update'
, yazı güncellenmeden hemen önce yapılan bir işlemdir , iletilen bağımsız değişken 2'dir: $post_ID
ve $data
bu, yazı tablosunun diğer tüm veritabanı sütunlarının bir dizisidir
'transition_post_status'
güncellemede tetiklenen bir kancadır ve 3 argüman iletir: $ new_post_status $old_post_status
ve $post
(object).
- Daha sonra, ateşlenen diğer 2 geçiş kancası vardır, ancak dinamik olarak adlandırılırlar, ateşlenen etkili eylemin eski ve yeni posta durumuna bağlı olduğu anlamına gelir.
"{$old_status}_to_{$new_status}"
ve "{$new_status}_{$post->post_type}"
. İlk olarak sadece post nesnesini argüman olarak, ikincisi post id ve post nesnesini iletin. Belgeleri burada bulabilirsiniz .
'edit_post'
2 bağımsız değişkeni ileten: $post_ID
ve $post
(nesne)
'post_updated'
bu geçiş 3 parametreler: $post_ID
, $post_after
(güncellemeden sonra sonrası nesne), $post_before
(post nesne güncellemeden önce)
- Başka dinamik kanca:
"save_post_{$post->post_type}"
Yayın türüne bağlıdır, örneğin standart mesajların içindir 'save_post_post'
ve sayfalar için olan 'save_post_page'
bu kanca geçerler 3 argümanlar,: $post_ID
, $post
(nesne) ve $update
ki, bir güncelleme gerçekleştirdiğinizde doğrudur (doğru veya yanlış) bir boolean aslında bir kanca ilk kez kaydedildiğinde bu kanca ateşlenir.
- '
save_post
' hem güncelleme hem de ilk kaydetme sırasında tetiklenir ve önceki kancanın aynı 3 argümanını iletir.
- '
save_post_{$post_type}
' hem güncelleme hem de ilk kaydetme sırasında tetiklenir ve önceki kancadaki ilk 2 argümanı geçirir.
- Sonunda '
wp_insert_post
' , hem güncelleme hem de ilk kaydetme sırasında işlenir ve önceki 2 kancanın aynı 3 argümanını iletir.
Bunlar kanca sonrası her güncellendiğinde ateş edilir, arka uç ve güncellenmiş zaman "manuel" seçeneğini kullanarak aracılığıyla yönetici sayfaları üzerinden hem wp_update_post
veya wp_insert_post
fonksiyonlar.
Gönderi yönetici sayfaları kullanılarak güncellendiğinde, ek kancalar açılır, bir örnek 'update_post_redirect'
veya 'post_updated_messages'
. ( Kullanım örnekleri için buna ve bu WPSE yanıtlarına bakın).
Bazı kanca argümanlarından yararlanmak istiyorsanız, bu ilk değil, açıkça add_action
çağrıda bildirmeniz gerektiğini unutmayın .
Örneğin, kullanmak istediğiniz takdirde '$update'
argüman (3 olduğunu) ait 'save_post'
kanca eklemek gerekir 3
olarak $accepted_args
üzerinde param add_action
( docs bakınız ):
// 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 );
}
Zamanlama ile ilgili son not : eylem tetiklenmeden önceadd_action
çağrıldığından emin olmalısınız , aksi takdirde hiçbir şey yapmaz.
Örneğin bu kod:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
hiçbir şey yapmaz, çünkü kanca ateşlendikten sonra eylem eklenir. İşte bunu tanımak basit, gerçek dünyada her zaman böyle değil.
save_post
, bu bir yazım hatası mı, yoksa orijinal kodunuzda mı? ayrıca, geliştirme sırasında hata ayıklamayı etkinleştirin .