Tambahkan Bidang ke Kategori / Taksonomi WordPress

Saya baru-baru ini memiliki kebutuhan untuk menyimpan beberapa informasi meta ekstra pada setiap kategori / taksonomi kustom di WordPress. Pada dasarnya, saya hanya perlu menambahkan bidang tambahan. Itu hanya masalah sederhana menemukan kait yang tepat dan membuat plugin meta kategori sederhana. Kami tidak melakukan banyak penambahan kategori baru, kami terutama hanya perlu menyimpan beberapa informasi tambahan pada yang sudah ada, jadi saya hanya terpaku pada formulir edit.

Saya juga ingin ini berfungsi tanpa menggunakan tabel khusus, tetapi sebenarnya tidak ada tempat yang baik untuk menyimpan informasi semacam ini di dalam tabel WordPress default. Saya memutuskan bahwa tabel wp_options akan paling cocok karena ketika itu datang ke sana, sebagian besar situs tidak akan memiliki lebih dari beberapa ratus kategori. Tidak ada cukup informasi yang disimpan di ujung kami untuk ini untuk membuat masalah.

 add_action ('category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_category', 'taxonomy_meta_form'); 

Tindakan pertama berhubungan dalam bentuk edit kategori / taksonomi. Ini menampilkan formulir yang telah kami buat dan output dari fungsi yang disebut taxonomy_meta_form_fields . Tindakan kedua memanggil taxonomy_meta_form ketika formulir kategori benar-benar diedit.

Kode Penuh

 add_action ('category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_category', 'taxonomy_meta_form'); function taxonomy_meta_form () {if (! current_user_can ('manage_options')) // pastikan bahwa pengguna memiliki pengembalian izin yang sesuai; if ($ _ POST ['extra_title']) {$ extra_title = sanitize_text_field ($ _ POST ['extra_title']); // pastikan tidak ada yang mencurigakan $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ cat_ID = (int) $ _ POST ['tag_ID']; $ extra_titles [$ cat_ID] = $ extra_title; // perbarui nilai untuk pembaruan ID ID kategori ini ('extra_taxonomy_titles', $ extra_titles); // simpan array, WP menangani serialisasi}} function taxonomy_meta_form_fields ($ tag) {$ cat_ID = $ tag-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ extra_titles [$ cat_ID]; ?> 

Mengaitkan Taksonomi Kustom

 add_action ('TAXONOMYNAME_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_TAXONOMYNAME', 'taxonomy_meta_form'); 

Untuk melakukan tindakan yang sama ini, tetapi untuk taksonomi khusus, itu adalah masalah sederhana untuk mengubah kaitan tindakan. Cukup ganti TAXONOMYNAME di atas dengan siput yang dikaitkan dengan taksonomi kustom Anda.

Menampilkan Informasi

Untuk mengambil informasi yang disimpan untuk kami di frontend, saya akan merekomendasikan membuat fungsi sederhana untuk disimpan dalam file functions.php tema Anda:

 function tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ extra_title = $ extra_titles [$ id]; mengembalikan $ extra_title; } 

Kemudian, bisa dipanggil dari halaman template seperti berikut:

 $ extra_title = tj_extra_title ($ category-> term_id); // ganti id dengan variabel apa pun yang sesuai untuk konteks Anda echo $ extra_title; 

Lihat kode di github. Ajukan pertanyaan di bawah ini.

Lihat Juga