Bagaimana filter dan pengait benar-benar berfungsi di PHP
21
Bagaimana cara kerja filter dan kait di WordPress?
Saya bertanya tentang sesuatu yang maju. Bagaimana ini diterapkan dalam PHP? Misalnya bagaimana cara mengumpulkan semua kait dari plugin yang berbeda dan "melampirkan" mereka ke kait inti dll.
Sejauh yang saya tahu tidak ada 'kait' atau 'filter' di php, ada fungsi. Wordpress memiliki fungsi-fungsi khusus yang sebelum eksekusi mereka menggunakan panggilan balik dari fungsi-fungsi lainnya.
Secara keseluruhan sudah ada beberapa global (apa lagi di dunia WordPress) yang terlibat:
global $wp_filter, $wp_actions, $wp_current_filter, $merged_filters;
Yang pertama $wp_filteradalah global Arrayyang menyimpan semua nama filter sebagai subarrays. Masing-masing subarrays kemudian memegang lebih banyak subarrays yang dipanggil kembali dipanggil dalam array prioritas.
Singkat secara mendalam
Jadi ketika fungsi eksekusi dipanggil, WordPress mencari array global tersebut untuk kunci-kunci dengan nama itu. Kemudian callback terlampir dijalankan prioritas setelah prioritas. Satu-satunya hal yang terjadi di depan adalah panggilan balik yang melekat pada allfilter.
Saat Anda menambahkan panggilan balik menggunakan add_actionatau add_filter, maka WordPress terlebih dahulu menghitung ID "unik" untuk tidak menimpa panggilan balik yang sudah terlampir.
Seperti yang Anda lihat, sub array utama adalah $tag(atau nama tindakan / filter), maka semuanya dipanggil dengan prioritas tertentu, dan kemudian string callback / ID "unik" digunakan sebagai kunci.
Kemudian, ketika filter dipanggil - terjadi dengan nama $tag/ action- / filter-name - array dicari dan callback dipanggil. Saat menggunakannya call_user_func_arraytidak terlalu penting berapa banyak argumen yang dilampirkan. WordPress menyelesaikannya dengan sendirinya.
jangan lupa bahwa ketika sedang melalui callback, ia memerintahkan eksekusi beberapa callback pada hook yang sama menggunakan "prioritas" mereka, yang ditetapkan (secara opsional) dengan add_action () dan apply_filters () dan default ke 10.
Tom Auger
1
@TomAuger Silakan menambahkan catatan dan suntingan tambahan untuk jawabannya.
kaiser
5
Kait disertakan dalam file inti WordPress dan beberapa file tema orang tua. Mereka memungkinkan Anda untuk menghubungkan konten di lokasi tertentu dalam file.
Contohnya adalah kait wp_head di WordPress. Anda dapat menggunakan pengait ini di tema anak Anda untuk menambahkan konten di lokasi itu '
Beberapa tema premium juga menyertakan kait tindakan yang dapat Anda gunakan dalam tema anak untuk melakukan hal yang sama. Berikut adalah peta visual yang mencakup semua kait tindakan dan posisi mereka menampilkan konten Anda dalam kerangka tema Genesis.
Filter memungkinkan Anda untuk memodifikasi output dari fungsi yang ada dan disertakan dalam file inti WordPress dan beberapa kerangka kerja tema induk seperti Genesis.
Berikut daftar filter yang dapat Anda gunakan dengan Genesis Design Framework
function the_excerpt(){
echo apply_filters('the_excerpt', get_the_excerpt());}
Anda juga dapat menggunakan kait dan filter dalam plugin untuk melakukan hal yang persis sama dan kode tidak akan hilang ketika Anda memperbarui tema induk atau WordPress.
Pada dasarnya, kait dan filter memungkinkan Anda untuk menyesuaikan dan memodifikasi WordPress dan tema induk Anda tanpa mengedit file inti WordPress atau file tema induk Anda.
Secara signifikan lebih mudah untuk menyesuaikan tema anak ketika kerangka tema induk menyertakan kait dan filter karena Anda tidak perlu mengedit file templat tema induk. Dengan cara ini Anda dapat dengan aman mengubah tema juga.
Ini adalah gambaran umum yang bagus tentang kait dan filter, tapi saya takut benar-benar melewatkan pertanyaan OP, yaitu tentang internal tentang cara kerja kait dan bagaimana WordPress membuat, menyimpan, dan memprosesnya. Jawaban bagus; Anda mungkin harus menautkan ke tutorial Anda di Situs WP.
Tom Auger
Baiklah saya akan menghapusnya. Buruk saya karena saya harus membaca pertanyaan lebih baik tetapi berpikir jawaban yang sudah diberikan akan lebih mudah bagi pemula untuk memahami jika mereka tahu dasar terlebih dahulu.
Brad Dalton
2
Brad, saya membatalkan penghapusan karena saya pikir mungkin berguna untuk memiliki info itu di sini juga. Jika Anda tidak setuju, cukup sebutkan / ping saya di sini dan saya akan menghapusnya lagi.
Jawaban:
Ikhtisar
Pada dasarnya " Plugin API ," yang memanggil Filter dan Hooks, terdiri dari fungsi-fungsi berikut:
apply_filters()
- jalankando_action
- jalankanapply_filters_ref_array()
- jalankando_action_ref_array()
- jalankanadd_filter()
- tambahkan ke tumpukanadd_action()
- tambahkan ke tumpukanInternal Internal
Secara keseluruhan sudah ada beberapa global (apa lagi di dunia WordPress) yang terlibat:
Yang pertama
$wp_filter
adalah globalArray
yang menyimpan semua nama filter sebagai subarrays. Masing-masing subarrays kemudian memegang lebih banyak subarrays yang dipanggil kembali dipanggil dalam array prioritas.Singkat secara mendalam
Jadi ketika fungsi eksekusi dipanggil, WordPress mencari array global tersebut untuk kunci-kunci dengan nama itu. Kemudian callback terlampir dijalankan prioritas setelah prioritas. Satu-satunya hal yang terjadi di depan adalah panggilan balik yang melekat pada
all
filter.Saat Anda menambahkan panggilan balik menggunakan
add_action
atauadd_filter
, maka WordPress terlebih dahulu menghitung ID "unik" untuk tidak menimpa panggilan balik yang sudah terlampir.Kemudian ia menambahkan panggilan balik Anda ke
global $wp_filter
tumpukan:Seperti yang Anda lihat, sub array utama adalah
$tag
(atau nama tindakan / filter), maka semuanya dipanggil dengan prioritas tertentu, dan kemudian string callback / ID "unik" digunakan sebagai kunci.Kemudian, ketika filter dipanggil - terjadi dengan nama
$tag
/ action- / filter-name - array dicari dan callback dipanggil. Saat menggunakannyacall_user_func_array
tidak terlalu penting berapa banyak argumen yang dilampirkan. WordPress menyelesaikannya dengan sendirinya.sumber
Kait disertakan dalam file inti WordPress dan beberapa file tema orang tua. Mereka memungkinkan Anda untuk menghubungkan konten di lokasi tertentu dalam file.
Contohnya adalah kait wp_head di WordPress. Anda dapat menggunakan pengait ini di tema anak Anda untuk menambahkan konten di lokasi itu '
Contoh:
Beberapa tema premium juga menyertakan kait tindakan yang dapat Anda gunakan dalam tema anak untuk melakukan hal yang sama. Berikut adalah peta visual yang mencakup semua kait tindakan dan posisi mereka menampilkan konten Anda dalam kerangka tema Genesis.
Contoh:
Inilah yang terlihat seperti kait jika Anda membuka file header.php dalam kerangka tema Genesis:
Berikut daftar kait WordPress yang dapat Anda gunakan dengan berbagai cara.
Filter memungkinkan Anda untuk memodifikasi output dari fungsi yang ada dan disertakan dalam file inti WordPress dan beberapa kerangka kerja tema induk seperti Genesis.
Berikut daftar filter yang dapat Anda gunakan dengan Genesis Design Framework
Berikut daftar filter yang disertakan di WordPress
Berikut adalah contoh bagaimana Anda dapat menggunakan filter dalam kerangka tema seperti Genesis:
Kode di atas dapat digunakan dalam tema anak untuk memodifikasi kata penulis teks dalam komentar Anda. Ini berfungsi dalam tema apa pun.
Berikut adalah contoh lain yang mengkustomisasi panjang kutipan menjadi 50 kata:
Anda akan menemukan fungsi the_excerpt () di file wp-include / post-template.php.
Begini tampilannya:
Anda juga dapat menggunakan kait dan filter dalam plugin untuk melakukan hal yang persis sama dan kode tidak akan hilang ketika Anda memperbarui tema induk atau WordPress.
Pada dasarnya, kait dan filter memungkinkan Anda untuk menyesuaikan dan memodifikasi WordPress dan tema induk Anda tanpa mengedit file inti WordPress atau file tema induk Anda.
Secara signifikan lebih mudah untuk menyesuaikan tema anak ketika kerangka tema induk menyertakan kait dan filter karena Anda tidak perlu mengedit file templat tema induk. Dengan cara ini Anda dapat dengan aman mengubah tema juga.
sumber