İsset'te "tümü" nedir ($ wp_filter ['all'])


10

WordPress'te yeni doğmuş biriyim. XHTML sayfalarını nasıl oluşturduğunu anlamaya çalışıyorum. Sanırım işlevi do_action( 'hook-name' ), ama isset( $wp_filter['all] )do_action işlevini okurken talimatın anlaşılması ile sıkışmış çünkü kelimenin anlamının ne olduğunu anlamıyorum all.

Bir PHP özelliği mi yoksa bir WordPress mi?

Yanıtlar:


9

allWordPress geliştiricilerinin diğer kancalardan farklı davranmak için seçtikleri bir dizedir. Taktığınızda all, geri çağrınız diğer tüm kancalar için tetiklenir .

Ben kaynağına bakarak çok fazla zaman harcamak olmaz do_action, sadece şunu bilin:

  1. add_action( 'x', 'whatever' )whateveriçin yangın demekdo_action( 'x' )
  2. add_action( 'all', 'whatever' )Kancanın adından bağımsız olarak herkeswhatever için yangın anlamına gelecektir . do_action

5

Ş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_arrayya 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).

resim açıklamasını buraya girin

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_filterWordPress'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_hooksbu isim alınmadığı için buna farklı, muhtemel diyebilirim . Bununla birlikte, eğer geçmişe dönersek, do_actiono zamandan beri @since 1.2.0ve apply_filtersbulacağı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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.