Rumah >Tutorial CMS >WordTekan >Pengenalan kepada meta dan wp_term istilah WordPress
Untuk mendapatkan semuanya berfungsi, anda perlu menyimpan metadata istilah anda sebagai medan di dalam jadual WP_OPTION terma atau hanya beberapa taksonomi yang disesuaikan.
backstory dengan istilah meta
Masyarakat telah menolak cara mudah untuk mengawal metadata jangka panjang sejak kembali ke WordPress 2.8. Sudah menjadi proses perlahan, tetapi akhirnya istilah telah direka semula dari bawah sehingga menggunakan struktur kelas. Ini ditambah dengan beberapa perubahan yang berbeza dalam WordPress 4.4 bermakna istilah dalam taksonomi (seperti 'tag', 'kategori' atau adat) kini boleh mempunyai meta mereka sendiri dengan mudah diberikan kepada mereka.
Sebelum WordPress 4.4 tidak ada cara yang jelas untuk menyelamatkan metadata dengan mudah untuk item jangka panjang, ini adalah batasan yang melekat pada istilah dari bagaimana ia dibina. Sekiranya anda memperluaskan taksonomi atau istilah, anda perlu menyimpan data anda secara langsung sebagai pilihan tapak menggunakan update_option. Ini tidak sesuai (kerana ia berantakan jadual pilihan).
//saving new fields for category function save_extra_taxonomy_fields($term_id){ $term = get_term($term_id); $term_slug = $term->slug; //collect category image id from posted values $term_category_image_id = isset($_POST['category_image_id']) ? sanitize_text_field($_POST['category_image_id']) : ''; //update value and save it as an option update_option('category_image_id_' . $term_slug, $term_category_image_id); } add_action('create_category','save_extra_taxonomy_fields');
Dalam contoh di atas, kita melaksanakan fungsi yang dilampirkan pada cangkuk create_category (yang mencetuskan apabila kita membuat istilah kategori baru). Ini akan mencari nilai kami dan selepas sanitizing akan menyelamatkannya sebagai pilihan. Walaupun ini berfungsi, ia tidak begitu cantik.
Untuk bekerja dengan meta terma anda akan menggunakan fungsi add_term_meta, update_term_meta dan delete_term_meta. Fungsi ini apabila digabungkan dengan elemen UI baru akan membolehkan anda menyimpan dan mengemas kini metadata baru untuk terma anda.
Menambah metadata untuk istilah melibatkan fungsi add_term_meta. Anda perlu menentukan tiga parameter dengan pilihan keempat.
Sebagai contoh, bayangkan bahawa untuk setiap istilah dalam taksonomi kategori kami, kami ingin memberikan sekeping metadata baru berdasarkan berapa banyak jawatan yang diberikan kepada kategori ini. Dengan WordPress 4.4 kita boleh melengkung melalui semua terma dan simpan metadata baru ini (untuk digunakan kemudian dalam tema atau plugin kami).
function add_featured_to_categories(){ //get all terms from the category taxonomy $taxonomy_name = 'category'; $term_args = array( 'orderby' => 'name', 'hide_empty' => false, 'fields' => 'ids' ); $terms = get_terms($taxonomy_name, $term_args); if($terms){ $term_key = 'term_size'; $term_value = 'empty'; $term_unique = true; //go through all terms and set the new term meta foreach($terms as $term_id){ $term = get_term($term_id, $taxonomy_name); $term_count = $term->count; //determine new meta value if($term_count > 10){ $term_value = 'big'; }else if($term_count >= 5 && $term_count < 10){ $term_value = 'medium'; }else if($term_count >= 1 && $term_count < 5){ $term_value = 'small'; } //save meta value add_term_meta($term_id, $term_key, $term_value, $term_unique); } } } add_action('init', 'add_featured_to_categories');
Pertimbangkan situasi di mana kita sudah mempunyai istilah meta yang disimpan untuk setiap terma kami dalam taksonomi kategori kami. Data yang disimpan ini mengandungi URL ke imej yang harus dipaparkan apabila kita melihat istilah. Kami mahu memaparkan imej ini sebagai spanduk di bawah keterangan atau tajuk terma kami, tetapi di atas penyenaraian jawatan kami.
//given a term, collect its saved image to be displayed function display_term_meta_image($term_id, $term_taxonomy){ //get supplied term $term = get_term($term_id, $term_taxonomy); if($term){ $term_image_id = get_term_meta($term_id, 'term_image_id', true); if($term_image_id){ //get the medium image size for display $term_image = wp_get_attachment_image_src($term_image_id, 'medium', false); echo '<img . $term_image[0] . '" title="' . $term->name . ' image"/>'; } } }Sekarang di dalam fail template Kategori.php kami atau lain -lain, kami boleh mengubahsuai fungsi di mana data terma kami dipaparkan.
Dalam situasi saya dengan dua puluh empat belas saya mengedit fail kategori.php dan memanggil fungsi baru kami selepas paparan Maklumat Huraian Terma.
//get the current object (term) $term_obj = get_queried_object(); //display meta data image for term if(function_exists('display_term_meta_image')){ display_term_meta_image($term_obj->term_id, $term_obj->taxonomy); }ini akan memaparkan foto kami tepat di bawah keterangan seperti ini:
//saving new fields for category function save_extra_taxonomy_fields($term_id){ $term = get_term($term_id); $term_slug = $term->slug; //collect category image id from posted values $term_category_image_id = isset($_POST['category_image_id']) ? sanitize_text_field($_POST['category_image_id']) : ''; //update value and save it as an option update_option('category_image_id_' . $term_slug, $term_category_image_id); } add_action('create_category','save_extra_taxonomy_fields');Fungsi ini akan melalui dan mengeluarkan sebarang metadata tambahan yang tidak kami tentukan dalam pembolehubah $ dibenarkan_term_keys kami, memotong ruang sia -sia dalam pangkalan data (berguna untuk apabila kami mempunyai puluhan entri metadata yang kami tidak perlukan lagi).
keserasian ke belakang dengan WordPress 4.3 dan lebih tua
kita mulakan dengan memanggil function_exists untuk memastikan fungsi add_term_meta baru ditakrifkan. Ini hanya akan berlaku untuk WordPress 4.4 dan lebih baru. Sekiranya kami mempunyai sokongan, kami menggunakan fungsi add_term_meta mudah untuk memberikan metadata kepada istilah kami.
function add_featured_to_categories(){ //get all terms from the category taxonomy $taxonomy_name = 'category'; $term_args = array( 'orderby' => 'name', 'hide_empty' => false, 'fields' => 'ids' ); $terms = get_terms($taxonomy_name, $term_args); if($terms){ $term_key = 'term_size'; $term_value = 'empty'; $term_unique = true; //go through all terms and set the new term meta foreach($terms as $term_id){ $term = get_term($term_id, $taxonomy_name); $term_count = $term->count; //determine new meta value if($term_count > 10){ $term_value = 'big'; }else if($term_count >= 5 && $term_count < 10){ $term_value = 'medium'; }else if($term_count >= 1 && $term_count < 5){ $term_value = 'small'; } //save meta value add_term_meta($term_id, $term_key, $term_value, $term_unique); } } } add_action('init', 'add_featured_to_categories');
Jika kita tidak mempunyai sokongan, kita ambil objek istilah itu sendiri (oleh ID jangka panjang) dan dari itu kita mengekstrak data term_taxonomy $ dan menggunakannya untuk membina nilai kunci akhir kita. Oleh kerana kita menyimpan ke dalam jadual pilihan kita perlu memastikan kunci adalah unik, kita melakukan ini dengan menambahkan nama taksonomi, istilah ID dan akhirnya kunci istilah menjadi satu pembolehubah. Kita mesti memastikan kunci tidak lebih daripada 64 aksara panjang dan jika demikian memotongnya. Sebaik sahaja kami telah melakukan semua ini, kami boleh memanggil fungsi tambahan kami untuk menyimpan nilai kami.
seperti yang anda lihat, ini mendapat sedikit lama, tetapi anda mendapat fleksibiliti tambahan untuk menyokong versi WordPress yang lebih tua dan lebih baru.
membungkus semuanya
Meta istilah WordPress adalah ciri yang membolehkan anda menyimpan metadata tersuai untuk istilah di laman WordPress anda. Metadata ini boleh menjadi apa -apa dari deskripsi tambahan, imej, warna, atau maklumat lain yang anda ingin kaitkan dengan istilah. Ia adalah alat yang berkuasa yang dapat meningkatkan fungsi dan pengalaman pengguna laman web anda. ) fungsi. Fungsi ini mengambil tiga parameter yang diperlukan: istilah ID, kunci meta (nama medan meta), dan nilai meta. Secara pilihan, anda juga boleh menentukan sama ada kunci meta harus unik.
Bagaimana saya boleh memadam meta istilah dalam wordpress?
Meta istilah dalam WordPress boleh digunakan untuk pelbagai tujuan, seperti menambah maklumat tambahan kepada kategori atau tag, mewujudkan bidang tersuai untuk istilah, meningkatkan fungsi carian, dan banyak lagi. Bolehkah saya menggunakan meta terma dengan taksonomi tersuai di WordPress?
Atas ialah kandungan terperinci Pengenalan kepada meta dan wp_term istilah WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!