WordPress'te Özel Özel Taksonomiler Nasıl Oluşturulur

Yayınlanan: 2022-03-11

En güçlü açık kaynaklı blog ve içerik yönetim sistemlerinden biri olan WordPress, interweblerin büyük bir bölümünü güçlendirmek için kullanılıyor. Tüm web sitelerinin dörtte biri WordPress kullanıyor ve WordPress geliştirme hizmetleri için talep sıkıntısı yok.

Diğer birçok CMS'den farklı olarak WordPress, esnekliği ve özelleştirilebilirliği nedeniyle birçok kişi tarafından sevilir. WordPress'in temel özelliklerinden biri olan taksonomiler, içeriği tam da ihtiyacınız olan şekilde düzenlemenize olanak tanır. Birkaç varsayılan taksonomi ile yerleşik olarak gelse de, WordPress istediğiniz kadar özel taksonomi eklemenize izin verir.

Bununla birlikte, taksonomilerin tam olarak istediğiniz gibi davranmasını sağlamak, bazı belgelenmemiş yaklaşımlarla oynamanızı gerektirebilir.

Çeşitli WordPress sınıflandırma seçeneklerinin grafik gösterimi

Bu makalede, WordPress'te etiketlerden çok kategoriler gibi davranan ve gönderilerinizi kutudan çıkardığınızdan çok daha katı bir şekilde kategorilere ayırmanıza olanak tanıyan özel özel taksonomileri nasıl tanımlayabileceğinizi öğreneceksiniz.

Taksonomi Nedir?

WordPress kodeksine göre:

Taksonomi, şeyleri birlikte gruplandırmanın bir yoludur.

Örneğin, bir demet farklı meyve çeşitli özelliklerine göre gruplandırılabilir ve daha sonra bu gruplara adlar verilebilir.

WordPress'te taksonomiler, gönderileri, sayfaları ve hatta özel gönderi türlerini farklı gruplar altında gruplamak için kullanılır.

Bir taksonomideki farklı gruplamaların adlarına terimler denir. Örneğin meyveleri ve renklerine göre nasıl gruplanabileceklerini ele alalım. Bu durumda terimler farklı renklerin adları olacaktır.

Varsayılan olarak, WordPress yerleşik olarak dört taksonomiyle gelir: kategori , etiket , bağlantı kategorisi ve gönderi biçimi . Bu varsayılan sınıflandırmalar hakkında daha fazla bilgiyi buradan edinebilirsiniz.

Bu yerleşik taksonomiler arasında kategoriler ve etiketler çok benzerdir ancak önemli bir farkları vardır: Kategoriler özel taksonomilerdir (yani, her gönderi için en fazla bir kategori seçebilirsiniz), oysa her gönderiye birden fazla etiket atanabilir.

Ayrıca, kategoriler genellikle önceden tanımlanırken, etiketler siz ilerledikçe tanımlanabilir.

Özel Taksonomileri Tanımlama

register_taxonomy() işlevini kullanarak özel bir sınıflandırma tanımlayabilirsiniz. Burada işlev hakkında daha fazla bilgi edinebilirsiniz.

Bu işlevin nasıl çalıştığını görmek için manzara fotoğrafları içeren gönderiler için özel bir sınıflandırma tanımlayalım.

 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' );

Yukarıdaki snippet'te, gönderiler için view adlı yeni bir sınıflandırma tanımlıyoruz.

Bu sınıflandırmanın, fotoğraflarda bulunan manzaraların türüne veya doğasına göre (örneğin, dağ, göl veya orman) fotoğrafları kategorize etmek için kullanıldığını düşünebilirsiniz.

Her zaman olduğu gibi, bu kategorinin belirli terimlerine ait gönderiler /view/{view_name} altında görünecektir.

Yukarıdaki snippet'teki yetenekler satırı isteğe bağlıdır. Onsuz, WordPress, gönderilerle aynı kullanıcılara varsayılan yetenekler sağlayacaktır. Yukarıda gösterildiği gibi, bu, özel "edit_guides" yeteneğine sahip herhangi bir kullanıcının sınıflandırmayı bir gönderiye atamasına ve özel "publish_guides" yeteneğine sahip herhangi bir kullanıcının yeni sınıflandırma öğeleri oluşturmasına olanak tanır.

Resmi belgelere göre, tanımlanabilecek dört yetenek vardır:

Taksonomi yetenekleri arasında assignterms , editterms , manageterms (yönetici navigasyonunda sınıflandırmayı görüntüler) ve deleteterms .

Taksonomiler Nasıl Kullanılır?

Kodunuz içinde, taksonomiyi kullanarak nesnelere terimler eklemek için wp_set_object_terms() işlevini kullanabilirsiniz. the_terms() işlevini kullanarak mevcut terimleri listeleyebilirsiniz. Ayrıca, özel sınıflandırmanız için bir terimler bulutu oluşturmak için wp_tag_cloud() işlevini kullanabilirsiniz. Bu işlevler hakkında daha fazla bilgiyi buradan edinebilirsiniz.

UI tarafında, WordPress her sınıflandırma için gönderilerde yeni bir meta kutusu oluşturur. Meta kutusu, gönderinize bir veya daha fazla terim bağlamanıza izin veren Etiketler meta kutusuna benzer. WordPress'in varsayılan olarak yaptığı budur ve bir taksonomiyi özel yaparak değiştirebileceğimiz şey budur: Özel taksonominin kategori taksonomisi gibi davranmasını sağlayın.

Taksonomilerde Münhasırlığı Zorlamak

register_taxonomy() yöntemiyle özel bir sınıflandırma oluşturduğumuzda, WordPress, düzenleme sonrası sayfasına birden çok öğe seçimi olan bir meta kutu ekler:

Bu meta kutusunu kullanarak, bir kullanıcı herhangi bir sayıda mevcut (zaten kullanılmış) terimi seçebilir ve ayrıca metin kutusunu kullanarak yeni terimler ekleyebilir.

Her gönderinin önceden tanımlanmış bir dizi kategoriden en fazla bir kategoriye ait olduğu kategori benzeri bir sınıflandırma oluşturmak için WordPress'te biraz ince ayar yaparak bunu yapabilirsiniz:

  • WordPress tarafından oluşturulan varsayılan meta kutusunu gizleyin.
  • Düzenleme sonrası sayfasında, tek öğe seçimi için kontroller sağlayacak özel bir meta kutusu oluşturun.
  • Gönderi kaydedildiğinde sınıflandırma değerini kaydedin.

Adımların her birine bir göz atalım.

WordPress Tarafından Oluşturulan Varsayılan Meta Kutusunu Gizle

Bunun için register_taxonomy show_in_quick_edit ve meta_box_cb seçeneklerini false olarak ayarlamamız gerekiyor.

Kullanılabilir terimler kümesine öğeler ekleyebileceğiniz özel bir sınıflandırma meta kutusunun ekran görüntüsü

İlk seçenek sınıflandırmayı hızlı/toplu düzenleme panelinde gizler ve ikinci seçenek onu düzenleme sonrası sayfasında gizler:

 register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));

Varsayılan meta kutusu gizlendiğinde, sınıflandırma yönetimi sayfası aracılığıyla sınıflandırmanın mevcut terimleri grubuna öğeler eklenebilir:

Birkaç radyo düğmesi içeren Özel Özel Taksonomi adlı bir meta kutunun ekran görüntüsü

Yazı Düzenleme Sayfasında Özel Meta Kutusu Oluşturun

Özel bir meta kutusu oluşturmak için add_meta_boxes WordPress kancasını kullanabiliriz. Burada kanca hakkında daha fazla bilgi edinebilirsiniz.

 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'); }

add_meta_box yöntemini aşağıdaki argümanlarla çağırıyoruz:

  • taxonomy_box – Meta kutusunun kimliği
  • __('Custom Exclusive Taxonomy') – Meta kutusunun başlığı
  • fill_custom_meta_box_content – ​​Meta kutusunun içeriğini doldurmak için kullanılan bir işlev
  • post – Bu, meta kutusunun yazı düzenleme sayfasında görünmesi gerektiğini gösterir.
  • side – Bu, meta kutusunun eklenmesi gereken yeri gösterir.

Kimlik olarak taxonomy_box nasıl belirttiğimize dikkat edin. Ancak, kutuya ne gireceğini tanımlamamıza izin verecek olan üçüncü parametredeki fonksiyondur.

Şimdi fill_custom_meta_box_content işlevini uygulayacağız:

 <?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 }

Burada ilk olarak taksonominin tüm terimlerini (yani mevcut değerleri) alıyoruz. Bunları radyo düğmesi kontrollerinin bir listesini göstermek için kullanacağız.

Ardından, get_the_terms() işlevini kullanarak şu anda seçili sınıflandırma terimini alırız—ilgili radyo düğmesini seçili yapmak için buna ihtiyacımız var.

Bu işlevin bir dizi döndürdüğüne dikkat edin. Bunun nedeni, varsayılan olarak gönderinin kendisiyle ilişkilendirilmiş herhangi bir sayıda terime sahip olabilmesidir. Varsayımımıza göre, gönderi en fazla bir terime sahiptir, bu nedenle ilk dizi öğesine erişiriz. (Dizi boşsa sorun değil; geçerli değer olarak null alırız ve hiçbir radyo düğmesi seçilmez.)

HTML yayan kod, radyo düğmelerinin adı olarak custom_taxonomy ve değerleri olarak karşılık gelen terim kimliklerini kullanır; radyo düğmesi kimliği öznitelikleri yalnızca etiket etiketlerine bağlanmak için kullanılır. Sonuç olarak, aşağıdaki özel meta kutusunu elde ederiz:

Custom Exclusive Taxonomy'nin "yeni etiket ekle" özelliğinin ekran görüntüsü artık WordPress panosu kenar çubuğunda mevcut

Gönderi Kaydedildiğinde Taksonomi Değerini Kaydet

Son olarak, gönderi kaydedildiğinde sınıflandırma değerini sürdürmemiz gerekiyor. Bunun için save_post kancasını kullanabiliriz:

 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'); }

Ve bu kadar! İşimiz bitti.

Artık yerleşik kategori taksonomisi gibi davranacak özel bir taksonomiyi nasıl tanımlayacağınızı biliyorsunuz.

Not: WordPress, özel sınıflandırmalar için münhasırlık arasında geçiş yapmayı kolaylaştırmak için bir özellik isteğini kabul etti. Ancak bilet bir süredir fazla hareketlilik görmüyor.

Sarmak

Taksonomiler, WordPress'te çok güçlü ve kullanışlı bir özelliktir. Kutunun dışında, gönderileri katı bir şekilde kategorize etme yeteneğinden yoksundurlar, ancak WordPress'teki hemen hemen her şeyde olduğu gibi, sınıflandırmalar ve ilgili işlevler son derece özelleştirilebilir. Bu, genellikle gerekli olan bu yeteneği birkaç adımda eklememizi sağlar.

Burada tanıtılan yaklaşım, sınıflandırma terimi seçimi için düzenleme sonrası sayfalarda daha da özelleştirilmiş kullanıcı arayüzü oluşturmak için de kullanılabilir.

Umarım özel özel taksonomileri tanımlamaya yönelik bu hızlı öğreticiyi faydalı bulmuşsunuzdur!