WordPress Hooks: Panduan Pemula untuk Menambahkan Hook Anda Sendiri

WordPress Hooks: Panduan Pemula untuk Menambahkan Hook Anda Sendiri

WordPress Hooks: Panduan Pemula untuk Menambahkan Hook Anda Sendiri
СОДЕРЖАНИЕ
02 июня 2020

Plugin adalah itu cara untuk memperluas WordPress. Alasannya sangat mudah untuk membuat WordPress melakukan penawaran Anda ada hubungannya dengan kait yang berserakan di kode sumber.


Ingin melakukan sesuatu segera setelah posting dipublikasikan? Ingin memodifikasi panjang kutipan? Ingin membuat statistik tampilan halaman Anda sendiri? Menemukan kait yang tepat adalah yang perlu Anda lakukan.

Tetapi bagaimana dengan melakukan hal yang sama dengan plugin? Hook tidak hanya untuk digunakan di WordPress, mereka pada dasarnya adalah pola desain yang dapat Anda terapkan dalam pekerjaan Anda sendiri.

Dalam artikel ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat membuat kait Anda sendiri untuk memudahkan Anda atau orang lain untuk membangun di atas pekerjaan Anda.

Mengapa Kita Membutuhkan Kait

Untuk menunjukkan kepada Anda betapa hebatnya kait, mari kita lihat contoh dari dunia nyata: Bidang Kustom Tingkat Lanjut. Plugin ini memungkinkan Anda untuk menambahkan bidang data khusus yang fleksibel ke posting; kita berbicara tentang Google Maps, bidang angka, pilihan ganda dan banyak lagi.

Semua ini dilakukan melalui antarmuka pengguna yang bagus, yang perlu Anda lakukan adalah menggunakan fungsi seperti get_field () atau the_field () di ujung depan. Sejauh ini bagus.

Mari kita asumsikan bahwa Anda sedang membangun alat yang memungkinkan orang untuk menjual sesuatu, menawarkan bidang untuk harga dan satu untuk mata uang. Namun secara internal, Anda selalu ingin menyimpan harga dalam Dolar, terlepas dari mata uang apa yang dipilih pengguna untuk ditampilkan.

Jika ACF (Bidang Kustom Lanjutan) tidak memiliki kaitan, ini akan sulit dilakukan, Anda mungkin perlu menggunakan mekanisme di luar ACF untuk menyimpan bidang ini. Untungnya, kami dilindungi oleh acf / save_post tindakan. Anda dapat menggunakan tindakan ini untuk mengubah data $ _POST sebelum disimpan – waktu yang tepat untuk mengonversi harga menjadi Dolar.

Ini adalah contoh kait yang sangat praktis tetapi ada alasan lain: pembuktian dan perpanjangan masa depan. Kait semacam API, memberi Anda arahan; kerangka kerja untuk berbicara. Jika Anda menyimpan data penting, Anda harus secara otomatis membuat kait sehingga orang lain dapat memanipulasi data jika perlu. Jika Anda menampilkan sesuatu yang penting untuk aplikasi Anda, gambar misalnya, gunakan filter yang memungkinkan penggunaan untuk menentukan jumlah gambar yang ditampilkan.

Bagaimana Hooks Bekerja Secara Internal

Untuk membuat kait kami sendiri, kami akan melakukan apa yang dilakukan WordPress secara internal – gunakan fungsi do_action () dan apply_filters () untuk menjalankan semua fungsi yang terkait. Mari kita beralih ke kode sumber WordPress untuk melihat bagaimana ini bekerja.

WordPress menggunakan fungsi wp_trim_excerpt () secara internal untuk membuat kutipan. Di WordPress 4.1 fungsi ini didefinisikan dalam wp-include / formatting.php, mulai dari baris 2542. Jika Anda mengalihkan perhatian Anda ke baris 2560 Anda akan melihat yang berikut:

$ excerpt_length = apply_filters (‘excerpt_length’, 55);

Apa artinya ini adalah sebagai berikut: Jalankan masing-masing fungsi yang terhubung ke kait excerpt_length dan kembalikan nilai akhir. Katakanlah Anda menggunakan 3 plugin yang mengubah panjang kutipan, lalu apa yang terjadi? Mari kumpulkan fungsi-fungsi ini di satu tempat dan lihatlah:

add_filter (‘excerpt_length’, ‘plugin_a_excerpt_modify’, 20);
plugin_a_excerpt_modify ($ length) {
return $ length – 10;
}

add_filter (‘excerpt_length’, ‘plugin_b_excerpt_modify’, 32);
plugin_b_excerpt_modify ($ length) {
pengembalian 104;
}

add_filter (‘excerpt_length’, ‘plugin_c_excerpt_modify’, 16);
plugin_c_excerpt_modify ($ length) {
return 20;
}

Pada akhirnya, panjang kutipan akan menjadi 104 kata. Filter dijalankan sesuai urutan prioritasnya. Karena itu fungsi plugin C dijalankan terlebih dahulu. Jika tidak ada fungsi lain yang terhubung, panjangnya sekarang menjadi 20 kata. Selanjutnya, plugin A menendang dan panjangnya menjadi 10. Akhirnya, plugin B menimbang, membuat panjang 104.

do_action () menggunakan mekanisme yang sama persis, menjalankan semua fungsi yang terkait dengan hook yang didefinisikan sebagai parameter pertama.

Perhatikan bahwa pola ini tertutup sepenuhnya, tidak bergantung pada definisi khusus apa pun. Anda dapat menggunakan do_action (‘lol_hook’) di mana saja Anda suka, skenario terburuk, tidak ada fungsi yang terkait dengan lol_hook. Dengan kata lain, kita sudah memiliki infrastruktur untuk membuat kait kita sendiri!

Membuat Kait Kita Sendiri

Seperti yang saya sebutkan di atas, yang perlu kita lakukan adalah memastikan untuk menggunakan do_action () dan / atau add_filter dan pastikan untuk mendokumentasikannya. Dengan cara ini, pembuat kode dan pengguna akan benar-benar mengetahui keberadaannya.

Mari kita anggap kita membuat galeri gambar yang diunggah terbaru yang diambil langsung dari database, kira-kira seperti ini:

$ args = array (
‘post_type’ => ‘lampiran’,
‘post_status’ => ‘apa saja’,
‘orderby’ => ‘tanggal’,
‘pesanan’ => ‘DESC’,
‘posts_per_page’ => 10,
‘bidang’ => ‘id’
);
$ images = WP_Query baru ($ args);
$ gallery = ‘[‘ .’gallery ids ="’ implode (‘,’, $ images). ‘"’.’] ‘;
echo do_shortcode ($ gallery);

Dalam contoh ini kami membuat kueri yang memastikan kami hanya mengambil gambar, dipesan berdasarkan tanggal dan terbatas pada 10 hasil. Menggunakan parameter bidang saya memastikan bahwa array id dikembalikan. Saya kemudian membuat shortcode galeri WordPress biasa dari informasi ini.

Ada dua pendekatan yang bisa Anda ambil untuk menambahkan kait di sini. Anda bisa menambahkannya sebelum definisi array $ args, seperti ini:

$ posts_per_page = apply_filters (‘my_gallery / posts_per_page’, 10);

Dalam hal ini, Anda perlu menggunakan variabel $ posts_per_page dalam array. Mungkin solusi yang lebih baik adalah membiarkan seluruh array dimodifikasi. Ini akan memungkinkan plugin lain (atau Anda, di masa depan) untuk menambahkan kategori, tag, dan batasan lain pada galeri – inilah kode lengkapnya:

$ args = array (
‘post_type’ => ‘lampiran’,
‘post_status’ => ‘apa saja’,
‘orderby’ => ‘tanggal’,
‘pesanan’ => ‘DESC’,
‘posts_per_page’ => 10,
‘bidang’ => ‘id’
);

$ args = apply_filters (‘my_gallery / query_args’, $ args);

$ images = WP_Query baru ($ args);
$ gallery = ‘[‘ .’gallery ids ="’ implode (‘,’, $ images). ‘"’.’] ‘;
echo do_shortcode ($ gallery);

Hanya itu yang ada untuk itu. Plugin lain sekarang dapat menggunakan kait my_gallery / query_args untuk memodifikasi fungsionalitas galeri yang dibuat.

Catatan tentang penamaan: garis miring tidak perlu sama sekali. Anda dapat menggunakan ‘my_plugin_query_args’ atau format lain yang Anda inginkan. Saya lebih suka garis miring karena secara jelas menyatakan plugin membuatnya dan fungsionalitas yang disediakannya.

Kesimpulan

Kait sangat kuat dan dapat digunakan tidak hanya untuk memperluas WordPress, tetapi untuk memperluas plugin Anda atau bahkan tema. Anda harus berhati-hati untuk tidak berlebihan dan menambahkan kait ke setiap sudut dan celah aplikasi Anda.

Alih-alih menambahkan hook ke urutan, status postingan, post_type, dan posts_per_page secara terpisah, saya menambahkan filter yang dapat memodifikasi seluruh array sekaligus. Bit data lain mungkin tidak masuk akal untuk ditambahkan, ini pada akhirnya terserah Anda.

Selamat mencoba membuat aplikasi yang lebih modular dan dapat diperpanjang, beri tahu kami jika Anda pernah menggunakan kait Anda di tempat yang keren sebelumnya!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Это интересно
    Adblock
    detector