Apa yang sebenarnya dilakukan apply_filters (…) di WordPress?

123

Saya mencoba untuk memahami beberapa fungsi di WordPress, tetapi saya tidak mengerti apa yang sebenarnya dilakukan apply_filters (...) .

Apakah seseorang dapat menjelaskan hal ini untuk saya dengan beberapa contoh?

Tim
sumber
12
Luar biasa: dev.themeblvd.com/tutorial/filters
Nabil Kadimi
Catatan yang apply_filters()merupakan nama yang sangat menyesatkan untuk fungsi tersebut karena menerapkan filter dan tindakan yang terkait dengan fungsi target
cameronjonesweb
@NabilKadimi, saran bagus, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , tetapi ketika fungsi ini tidak menerima argumen apa pun (silakan klik tautan untuk melihat fungsi mana yang saya bicarakan), bagaimana variabel $ output diubah , seperti yang dia jelaskan di bagian kode berikutnya?
Ramesh Pareek
@RameshPareek Tautan Anda tampaknya tidak berfungsi seperti yang diharapkan, harap gunakan inti Github.
Nabil Kadimi
Maaf! Gulir ke bawah ke Contoh 1: Dasar-dasar di halaman itu.
Ramesh Pareek

Jawaban:

104

apply_filters($tag, $value)meneruskan argumen 'nilai' ke setiap fungsi 'terkait' (menggunakan add_filter) ke dalam 'tag' filter yang ditentukan. Setiap fungsi melakukan beberapa pemrosesan pada nilai dan mengembalikan nilai yang dimodifikasi untuk diteruskan ke fungsi berikutnya dalam urutan.

Misalnya, secara default (di WordPress 2.9) the_contentfilter meneruskan nilai melalui urutan fungsi berikut:

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop.dll
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
Richard M
sumber
Juga ingatlah untuk menggemakan apa pun yang tidak Anda gunakan nilainya jika tampaknya itu apply_filters($value)menghapus nilai ...
MrMesees
32

jawaban terlambat

Penjelasan singkat

apply_filters()berinteraksi dengan global $wp_filtersarray. Pada dasarnya ini hanya memeriksa array jika filter saat ini (atau hook) memiliki aksi (/ fungsi panggilan balik) terpasang dan kemudian memanggilnya.

Penjelasan panjang

Saat Anda memasang callback / action ke filter atau hook, maka Anda cukup menambahkan nama callback ke array filter global. Ketika kemudian, dalam kode (misalnya template, file inti atau plugin) panggilan ke do_action()atau apply_filters()terjadi, maka WordPress mencari melalui array dan memanggil callback. Satu-satunya hal yang lebih istimewa dengan filter daripada dengan hook adalah, ia mengembalikan nilai (untuk penanganan lebih lanjut) daripada hanya mengaktifkan callback. Kesimpulannya: Hooks untuk memasukkan data, sedangkan filter untuk mengubah data.

kaisar
sumber
19

Inilah yang saya kumpulkan, setelah mempertimbangkan jawaban paling populer dan sumber daya tambahan:

  • $ tag sepertinya sinonim untuk nama kail. (Itu tidak terlalu intuitif bagi saya.)
  • the_content adalah contoh dari sebuah hook, dari tipe "filter".
  • hook the_content terdiri dari beberapa filter.
  • Filter mengubah data. Mereka pada dasarnya memfilter database, mengubah data sebelum pengguna melihatnya.
  • Penggunaan umum dari apply_filters (), misalnya, adalah untuk menerapkan filter the_content ke $ content. Dalam hal ini, pengembalian ganda akan diubah menjadi <p>tag, wajah tersenyum akan diubah menjadi ikon, dll.
  • "the_content" adalah hook, sedangkan "the_content ()" adalah fungsi.
Marjorie Roswell
sumber
1

Dalam istilah yang paling dasar, apply_filters digunakan untuk menginisialisasi pengait filter ... add_filter memberikan fungsi baru ke pengait yang telah dibuat.

Steve
sumber
3
Maaf, ini adalah cara yang salah: apply_filters () memanggil kait filter yang sudah diinisialisasi dan add_filter () adalah panggilan yang membuat kait filter. Saya tahu Anda benar-benar bermaksud demikian, tetapi Anda memiliki fungsi di sekitar cara yang salah!
Brian C
apply_filters ($ tag, $ value); memungkinkan Anda untuk membuat tempat dalam kode Anda di mana Anda kemudian dapat mengizinkan nilai $ yang Anda berikan untuk dihubungkan dan dimodifikasi dengan menggunakan add_filter ();
Styledev