Cara Membuat Taksonomi Kustom Eksklusif di WordPress
Diterbitkan: 2022-03-11WordPress, salah satu sistem manajemen konten dan blogging open source yang paling kuat, digunakan untuk menggerakkan sebagian besar interwebs. Hingga seperempat dari semua situs web menjalankan WordPress dan tidak ada kekurangan permintaan untuk layanan pengembangan WordPress.
Tidak seperti banyak CMS lainnya, WordPress disukai oleh banyak orang karena fleksibilitas dan kemampuan penyesuaiannya. Taksonomi, salah satu fitur inti WordPress, memungkinkan Anda mengatur konten sesuai kebutuhan. Meskipun dilengkapi dengan beberapa taksonomi default, WordPress memungkinkan Anda menambahkan taksonomi kustom sebanyak yang Anda mau.
Namun, membuat taksonomi berperilaku persis seperti yang Anda inginkan mungkin mengharuskan Anda untuk mengutak-atik beberapa pendekatan yang tidak terdokumentasi.
Pada artikel ini, Anda akan belajar bagaimana Anda dapat mendefinisikan taksonomi khusus eksklusif di WordPress yang berperilaku lebih seperti kategori daripada tag, memungkinkan Anda untuk mengkategorikan posting Anda jauh lebih ketat daripada yang Anda bisa di luar kotak.
Apa itu Taksonomi?
Menurut kodeks WordPress:
Taksonomi adalah cara untuk mengelompokkan sesuatu.
Misalnya, sekelompok buah yang berbeda jenisnya dapat dikelompokkan bersama menurut berbagai karakteristiknya dan kemudian kelompok tersebut dapat diberi nama.
Di WordPress, taksonomi digunakan untuk mengelompokkan posting, halaman, dan bahkan jenis posting khusus di bawah grup yang berbeda.
Nama-nama untuk pengelompokan yang berbeda dalam taksonomi disebut istilah . Ambil buah-buahan, misalnya, dan bagaimana mereka dapat dikelompokkan berdasarkan warnanya. Dalam hal ini, nama-nama warna yang berbeda akan menjadi istilah.
Secara default, WordPress hadir dengan empat taksonomi: kategori , tag , kategori tautan , dan format posting . Anda dapat mempelajari lebih lanjut tentang taksonomi default ini di sini.
Di antara taksonomi bawaan ini, kategori dan tag sangat mirip tetapi memiliki satu perbedaan penting: Kategori adalah taksonomi eksklusif (yaitu, untuk setiap pos, Anda dapat memilih paling banyak satu kategori) sedangkan setiap pos dapat diberi beberapa tag.
Selain itu, kategori biasanya telah ditentukan sebelumnya, sementara tag dapat ditentukan saat Anda menggunakannya.
Mendefinisikan Taksonomi Kustom
Anda dapat menentukan taksonomi khusus menggunakan fungsi register_taxonomy() . Anda dapat mempelajari lebih lanjut tentang fungsi di sini.
Untuk melihat cara kerja fungsi ini, mari kita tentukan taksonomi khusus untuk postingan dengan foto pemandangan.
function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );Dalam cuplikan di atas, kami mendefinisikan taksonomi baru untuk postingan yang disebut view .
Anda dapat menganggap taksonomi ini digunakan untuk mengkategorikan foto berdasarkan jenis atau sifat pemandangan yang ada di foto (misalnya, gunung, danau, atau hutan).
Seperti biasa, postingan yang termasuk dalam istilah tertentu dari kategori ini akan muncul di bawah /view/{view_name} .
Baris kemampuan dalam cuplikan di atas bersifat opsional. Tanpa itu, WordPress akan memiliki kemampuan default untuk pengguna yang sama dengan posting. Seperti yang ditunjukkan di atas, ini akan memungkinkan setiap pengguna dengan kemampuan "edit_guides" khusus untuk menetapkan taksonomi ke sebuah pos dan setiap pengguna dengan kemampuan "publish_guides" khusus untuk membuat item taksonomi baru.
Menurut dokumentasi resmi, ada empat kemampuan yang dapat didefinisikan:
Kemampuan taksonomi termasuk
assignterms,editterms,manageterms(menampilkan taksonomi di navigasi admin) dandeleteterms.
Bagaimana Taksonomi Digunakan
Dalam kode Anda, Anda dapat menggunakan fungsi wp_set_object_terms() untuk menambahkan istilah ke objek menggunakan taksonomi. Anda dapat membuat daftar istilah yang ada menggunakan fungsi the_terms() . Selanjutnya, Anda dapat menggunakan fungsi wp_tag_cloud() untuk menghasilkan kumpulan istilah untuk taksonomi khusus Anda. Anda dapat mempelajari lebih lanjut tentang fungsi-fungsi ini di sini.
Di sisi UI, WordPress membuat kotak meta baru pada postingan untuk setiap taksonomi. Kotak meta mirip dengan kotak meta Tag yang memungkinkan Anda menautkan satu atau lebih istilah ke postingan Anda. Inilah yang dilakukan WordPress secara default, dan inilah yang dapat kita ubah dengan membuat taksonomi eksklusif: Jadikan taksonomi kustom berperilaku seperti taksonomi kategori.
Memaksa Eksklusivitas pada Taksonomi
Saat kami membuat taksonomi khusus dengan metode register_taxonomy() , WordPress menambahkan kotak meta dengan beberapa pilihan item ke halaman pengeditan posting:
Dengan menggunakan kotak meta ini, pengguna dapat memilih sejumlah istilah yang ada (sudah digunakan) dan juga dapat menambahkan istilah baru menggunakan kotak teks.
Untuk membuat taksonomi seperti kategori, di mana setiap posting termasuk paling banyak satu kategori dari serangkaian kategori yang telah ditentukan, Anda dapat melakukannya dengan sedikit mengutak-atik WordPress:
- Sembunyikan kotak meta default yang dibuat oleh WordPress.
- Buat kotak meta khusus pada halaman pengeditan posting yang akan memberikan kontrol untuk pemilihan item tunggal.
- Simpan nilai taksonomi saat posting disimpan.
Mari kita lihat setiap langkahnya.
Sembunyikan Kotak Meta Default yang Dibuat oleh WordPress
Untuk ini, kita perlu menyetel show_in_quick_edit dan meta_box_cb ke false saat memanggil register_taxonomy .

Opsi pertama menyembunyikan taksonomi di panel edit cepat/massal dan opsi kedua menyembunyikannya di halaman edit posting:
register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));Ketika kotak meta default disembunyikan, item dapat ditambahkan ke kumpulan persyaratan taksonomi yang tersedia melalui halaman manajemen taksonomi:
Buat Kotak Meta Kustom di Halaman Pengeditan Posting
Untuk membuat kotak meta khusus, kita dapat menggunakan hook add_meta_boxes WordPress. Anda dapat mempelajari lebih lanjut tentang kail di sini.
add_action('add_meta_boxes', 'add_custom_meta_box'); function add_custom_meta_box(){ add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side'); } Kami memanggil metode add_meta_box dengan argumen berikut:
-
taxonomy_box– ID kotak meta -
__('Custom Exclusive Taxonomy')– Judul kotak meta -
fill_custom_meta_box_content– Fungsi yang digunakan untuk mengisi konten meta box -
post– Ini menunjukkan bahwa kotak meta akan muncul di halaman pengeditan posting. -
side– Ini menunjukkan tempat di mana kotak meta harus dimasukkan.
Perhatikan bagaimana kami menentukan taxonomy_box sebagai ID. Namun, itu adalah fungsi dalam parameter ketiga yang memungkinkan kita menentukan apa yang akan masuk ke dalam kotak.
Kami sekarang akan mengimplementasikan fungsi fill_custom_meta_box_content :
<?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }Di sini, pertama-tama kita mengambil semua istilah (yaitu, nilai yang ada) dari taksonomi. Kami akan menggunakan ini untuk menampilkan daftar kontrol tombol radio.
Selanjutnya, kita mengambil istilah taksonomi yang saat ini dipilih menggunakan fungsi get_the_terms() —kita membutuhkannya untuk membuat tombol radio masing-masing dipilih.
Perhatikan bahwa fungsi ini mengembalikan sebuah array. Ini karena, secara default, postingan dapat memiliki sejumlah istilah yang terkait dengannya. Dengan asumsi kami, posting memiliki paling banyak satu istilah, jadi kami mengakses elemen array pertama. (Tidak apa-apa jika array kosong; kami akan mendapatkan null sebagai nilai saat ini dan tidak ada tombol radio yang akan dipilih.)
Kode pemancar HTML menggunakan custom_taxonomy sebagai nama tombol radio dan ID istilah yang sesuai sebagai nilainya; atribut ID tombol radio hanya digunakan untuk menghubungkan ke tag label. Hasilnya, kami mendapatkan kotak meta khusus berikut:
Simpan Nilai taksonomi Saat Postingan Disimpan
Akhirnya, kita perlu mempertahankan nilai taksonomi saat posting disimpan. Untuk ini, kita dapat menggunakan kait save_post :
add_action('save_post', 'save_custom_taxonomy'); function save_custom_taxonomy($post_id){ if ( isset( $_REQUEST['custom_taxonomy'] ) ) wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy'); }Dan itu saja! Kami selesai.
Anda sekarang tahu cara mendefinisikan taksonomi khusus yang akan berperilaku seperti taksonomi kategori bawaan.
Catatan: WordPress telah menerima permintaan fitur untuk mempermudah beralih eksklusivitas untuk taksonomi khusus. Namun, tiket tidak melihat banyak aktivitas untuk sementara waktu.
Bungkus
Taksonomi adalah fitur yang sangat kuat dan berguna di WordPress. Di luar kotak, mereka tidak memiliki kemampuan untuk membuat kategorisasi posting yang ketat, tetapi seperti hampir semua hal di WordPress, taksonomi dan fungsionalitas terkait sangat dapat disesuaikan. Ini memungkinkan kita untuk menambahkan kemampuan yang sering diperlukan ini dalam beberapa langkah.
Pendekatan yang diperkenalkan di sini juga dapat digunakan untuk membuat UI yang lebih disesuaikan pada halaman pengeditan pos untuk pemilihan istilah taksonomi.
Saya harap Anda telah menemukan tutorial singkat tentang mendefinisikan taksonomi khusus eksklusif ini berguna!
