Şartlı if ( isset($wp_filter['all']) ) {
olarak şu kanca oluşturma işlevlerinde bulabilirsiniz:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
Bunlar arasındaki fark gönderilen argüman sayısındadır. Ya birden fazla argümana, ref_array
ya da tek bir argümana ihtiyacımız var. Diğer eylem "eylem ve filtre" basittir, eylem herhangi bir işlev / eylem yapabilir ve filtre adı genellikle dize verisi alıp filtrelenen verileri döndüren işlevler için ayrılmıştır.
Tamam, kancaları böyle yaratırsınız. Kancaların isimleri vardır ve aynı kanca adında birden çok işlev adı avlayabilirsiniz (okuma: etiket).
Ancak, belirli kancalarla ilişkili tüm işlevleri tanımladıktan sonra, tüm kanca adlarını ve ilişkili işlev adlarını bir yerde saklamanız gerekir. Bu yüzden global $wp_filter
WordPress'te varız . Eğer bu değişkenin çıktısını alırsanız ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
Bu değişkenin adı üzerinde tartışmayalım. Şahsen, $wp_hooks
bu isim alınmadığı için buna farklı, muhtemel diyebilirim . Bununla birlikte, eğer geçmişe dönersek, do_action
o zamandan beri @since 1.2.0
ve apply_filters
bulacağız @since 0.71
(9 Haziran 2003'te yayınlandı.). Bu size neden çağrıldığını oldukça iyi açıklıyor $wp_filter
. En olası olanı, filtrelerin ilk olarak WordPress'te tanıtılmasıdır. Daha sonra eylemler başlattılar.
Sadece @TheDeadMedic den söyleniyor bina ...
add_action ('all', 'whatever'), çağrının adından bağımsız olarak her do_action için ne tetiklenirse o anlama gelir.
İhtiyacımız var neden sorusunu gündeme $wp_filter['all']
? Sadece birkaç örnek. Gelecek WordPress sürümlerinde içgözlem, testler ve olası daha fazla sistem dahili özelliği.