Son zamanlarda, WordPress'te her kategori / özel taksonomi üzerine bazı fazladan meta bilgi saklama ihtiyacım vardı. Temel olarak, sadece fazladan bir alan eklemem gerekiyordu. Doğru kancaları bulmanın ve basit bir kategori meta eklentisi yapmanın sadece basit bir meselesiydi. Yeni kategoriler ekleyerek pek bir şey yapmıyoruz, temel olarak sadece mevcut olanlarla ilgili bazı ek bilgileri depolamamız gerekiyordu, bu yüzden sadece düzenleme formuna girdim.
Ayrıca herhangi bir özel tablo kullanmadan çalışmasını istedim, ancak bu sıralamadaki bilgileri varsayılan WordPress tablolarında saklamak için gerçekten iyi bir yer yok. Wp_options tablosunun en uygun duruma geleceğine karar verdim, çünkü bu siteye geldiğinde, birçok sitenin birkaç yüz kategoriden fazlası olmayacaktı. Bir sorun yaratmak için bunun için yeterli bilgi depolanmamaktadır.
ADD_ACTION ( 'category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_category', 'taxonomy_meta_form');
Kategori / taksonomi düzenleme formundaki ilk eylem kancaları. Oluşturduğumuz formu ve taxonomy_meta_form_fields adlı işlevin çıktısını görüntüler. İkinci eylem, kategori formu gerçekten düzenlendiğinde taxonomy_meta_form çağırır.
Tam kod
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')) // kullanıcının uygun izinlere sahip olduğundan emin olun; if ($ _ POST ['extra_title']) {$ extra_title = sanitize_text_field ($ _ POST ['extra_title']); // Kötü niyetli bir şey olmadığından emin olun $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ cat_ID = (int) $ _ POST ['tag_ID']; $ extra_titles [$ cat_ID] = $ extra_title; // bu kategorinin kimliği update_option ('extra_taxonomy_titles', $ extra_titles) için değeri güncellemek; // diziyi saklar, WP serileştirmeyi işler}} function taxonomy_meta_form_fields ($ tag) {$ cat_ID = $ tag-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ extra_titles [$ cat_ID]; ?>
Özel Taksonomi İçeren
ADD_ACTION ( 'TAXONOMYNAME_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_TAXONOMYNAME', 'taxonomy_meta_form');
Aynı eylemi yapmak için, ancak bunun yerine özel taksonomiler için, eylem kancasını değiştirmenin basit bir meselesi. Yukarıdaki TAXONOMYNAME dosyasını özel taksonomuzla ilişkilendirilmiş sümüklerle değiştirin.
Bilgilerin Görüntülenmesi
Ön tarafımızda saklanan bilgileri almak için, temanın functions.php dosyasında saklamak için basit bir işlev oluşturmanızı öneririz:
işlev tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ extra_titles); $ extra_title = $ extra_titles [$ id]; $ extra_title döndürün; }
Daha sonra, bir şablon sayfasından şu şekilde çağrılabilir:
$ extra_title = tj_extra_title ($ category-> term_id); // kimliğinizi, içeriğiniz için uygun olan değişkenle değiştirin echo $ extra_title;
Github'da kodu görüntüleyin. Aşağıdaki soruları sorun.