Apa itu "semua" di isset ($ wp_filter ['all'])

10

Saya seorang pemula di WordPress. Saya mencoba memahami bagaimana cara menghasilkan halaman XHTML. Saya kira itu fungsi dari do_action( 'hook-name' ), tetapi saya terjebak dengan pemahaman instruksi isset( $wp_filter['all] )ketika membaca fungsi do_action karena saya tidak mengerti apa arti dari kata tersebut all.

Apakah ini fitur PHP atau WordPress?

nguyen mc
sumber

Jawaban:

9

allhanyalah sebuah string yang dipilih pengembang WordPress untuk berperilaku berbeda dari yang lain. Saat Anda melampirkan all, panggilan balik Anda akan diaktifkan untuk semua kait lainnya .

Saya tidak akan menghabiskan terlalu banyak waktu melihat sumber do_action, hanya tahu bahwa:

  1. add_action( 'x', 'whatever' )akan berarti whateverkebakaran untukdo_action( 'x' )
  2. add_action( 'all', 'whatever' )akan berarti whateverkebakaran untuk setiap orang do_action , terlepas dari nama kaitnya.
TheDeadMedic
sumber
5

Bersyarat if ( isset($wp_filter['all']) ) {Anda dapat menemukan tepat di fungsi-fungsi pembuatan kait ini:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

Perbedaannya adalah jumlah argumen yang dikirim. Entah kita membutuhkan beberapa argumen, ref_arrayatau argumen tunggal. Perbedaan lainnya "tindakan vs. filter" adalah sederhana, tindakan dapat melakukan fungsi / tindakan apa pun, dan nama filter biasanya dicadangkan untuk fungsi yang mengambil data string dan mengembalikan data yang difilter.

OK, inilah cara Anda membuat kait. Dan kait memang memiliki nama, dan Anda dapat menangkap beberapa nama fungsi dengan nama kait yang sama (baca: tag).

masukkan deskripsi gambar di sini

Tetapi begitu Anda mendefinisikan semua fungsi yang terkait dengan kait tertentu, Anda perlu menyimpan semua nama kait dan nama fungsi terkait di suatu tempat. Inilah sebabnya kami berada global $wp_filterdi WordPress. Jika Anda menampilkan variabel itu, Anda akan mendapatkan sesuatu seperti ...

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
                        )

                )

        )

Baiklah, janganlah kita berdebat tentang nama variabel ini. Secara pribadi, saya akan menyebutnya berbeda, kemungkinan $wp_hookskarena nama ini tidak diambil. Namun, jika kita kembali ke sejarah kita akan menemukan do_actionadalah sejak dulu @since 1.2.0dan apply_filterssekarang @since 0.71(dirilis 9 Juni 2003). Itu memberi Anda penjelasan yang cukup bagus mengapa itu disebut $wp_filter. Ini sangat mungkin karena filter diperkenalkan pertama kali di WordPress. Kemudian mereka memperkenalkan tindakan.

Hanya membangun dikatakan dari @TheDeadMedic ...

add_action ('semua', 'apa pun') akan berarti kebakaran apa pun untuk setiap do_action, terlepas dari nama kaitnya.

Saya mengajukan pertanyaan mengapa kita perlu $wp_filter['all']? Hanya beberapa contoh. Introspeksi, pengujian, dan kemungkinan lebih banyak fitur internal sistem di versi WordPress yang akan datang.

prosti
sumber