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.
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.
Jawaban:
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 tumpukanSecara 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_filter
adalah global Array
yang menyimpan semua nama filter sebagai subarrays. Masing-masing subarrays kemudian memegang lebih banyak subarrays yang dipanggil kembali dipanggil dalam array prioritas.
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
atau add_filter
, maka WordPress terlebih dahulu menghitung ID "unik" untuk tidak menimpa panggilan balik yang sudah terlampir.
$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
Kemudian ia menambahkan panggilan balik Anda ke global $wp_filter
tumpukan:
$wp_filter[ $tag ][ $priority ][ $idx ] = array(
'function' => $function_to_add,
'accepted_args' => $accepted_args
);
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_array
tidak terlalu penting berapa banyak argumen yang dilampirkan. WordPress menyelesaikannya dengan sendirinya.
foreach ( (array) current( $wp_filter[ $tag ] ) as $the_ )
{
call_user_func_array(
$the_['function'],
array_slice(
$args,
0,
(int) $the_['accepted_args']
)
);
}
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:
add_action('wp_head', 'add_content_to_head');
function add_content_to_head() {
echo 'Your Content';
}
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:
add_action('genesis_header', 'add_content_to_header');
function add_content_to_header() {
echo 'Your Content';
}
Inilah yang terlihat seperti kait jika Anda membuka file header.php dalam kerangka tema Genesis:
do_action( 'genesis_header' );
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:
add_filter( 'comment_author_says_text', 'custom_comment_author_says_text' );
function custom_comment_author_says_text() {
return 'author says';
}
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:
add_filter( 'excerpt_length', 'change_excerpt_length' );
function change_excerpt_length($length) {
return 50;
}
Anda akan menemukan fungsi the_excerpt () di file wp-include / post-template.php.
Begini tampilannya:
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.