Özel Yazı Tipine Etiketler Nasıl Eklenir?


28

Özel bir yazı tipim var portfoliove ona taksonomi etiketlerini eklemeye çalışıyorum, bunu nasıl yaparım?


@chifliiiii Bunu yaparsam, Kategoriler ve Etiketler Mesajlar için kullanılanlarla aynıdır. Yeni posta türüne özel olan Kategorileri ve Etiketleri nasıl alabilirim?
Troy Templeman

@ chifliiiii Şablondaki etiketleri gösteriliyor mu?
Max,

Yanıtlar:


15

Bunun gibi: ("Portföy" deyince, taksonomiyi yazı tipine kaydettirdiğiniz yerdir

add_action( 'init', 'create_tag_taxonomies', 0 );

//create two taxonomies, genres and tags for the post type "tag"
function create_tag_taxonomies() 
{
  // Add new taxonomy, NOT hierarchical (like tags)
  $labels = array(
    'name' => _x( 'Tags', 'taxonomy general name' ),
    'singular_name' => _x( 'Tag', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Tags' ),
    'popular_items' => __( 'Popular Tags' ),
    'all_items' => __( 'All Tags' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Edit Tag' ), 
    'update_item' => __( 'Update Tag' ),
    'add_new_item' => __( 'Add New Tag' ),
    'new_item_name' => __( 'New Tag Name' ),
    'separate_items_with_commas' => __( 'Separate tags with commas' ),
    'add_or_remove_items' => __( 'Add or remove tags' ),
    'choose_from_most_used' => __( 'Choose from the most used tags' ),
    'menu_name' => __( 'Tags' ),
  ); 

  register_taxonomy('tag','portfolio',array(
    'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag' ),
  ));
}
?>

@JoeBobby muhtemelen mevcut tüm seçenekler hakkında daha iyi bir his elde etmek için taksonomilerin kaydı için WordPress Codex sayfasını incelemeye değecektir
Stephen S.

8
Bunun bir özel yazı tipine mevcut 'post_tag' taksonomisini eklemek yerine 'tag' adında yepyeni bir taksonomi yarattığını not edin.
Jake,

@chifliiiii etiketleri bağlantıları ile yazılan tek sayfasında bu etiketleri nasıl, ne etiket sayfası için bir şablon oluşturmak için
Dinesh

1
Jake ile aynı fikirdeyim, bunun sorunu çözmediğini hissediyorum. @Marcus'un cevabı kabul edildiği gibi işaretlenmelidir.
Craig Wayne,

58

Veya sadece ekleyin:

'taxonomies' => array('post_tag')

Bu gönderi türü ile birlikte kullanılacak categoryveya benzeri bir dizi kayıtlı taksonomi post_tag. Bu register_taxonomy_for_object_type()doğrudan arama yerine kullanılabilir . Özel taksonomilerin hala kayıtlı olmaları gerekmektedir register_taxonomy().

ile özel yazı türünü oluşturduğunuz -file'deki $argsdiziye .functions.phpregister_post_type()


2
Lütfen cevabınıza bir açıklama ekleyin: bu neden sorunu çözdü?
fuxia

5

Bunu kullan:

add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
};

0

Sadece bu kodu kullanmak size yardımcı olabilir

 add_action( 'init', 'create_client_tax' );
function create_client_tax() {
    register_taxonomy( 
            'client_tag', //your tags taxonomy
            'client',  // Your post type
            array( 
                'hierarchical'  => false, 
                'label'         => __( 'Tags', CURRENT_THEME ), 
                'singular_name' => __( 'Tag', CURRENT_THEME ), 
                'rewrite'       => true, 
                'query_var'     => true 
            )  
        );
}

Kabul edilen bir elimden versiyonu zaten cevap. Ayrıca, bu aynı zamanda mevcut 'etiket sonrası' taksonomisini kullanmak yerine tamamen yeni bir taksonomi ekler.
acidrums4

0

Yöntem 1 (yukarıdaki yanıtlardan: https://wordpress.stackexchange.com/a/106211/38771 )

Farklı gönderi türleri, varsayılan "gönderi" türündeki aynı "Etiketler" verilerini kullanır.

  • Yararları

    • Her şey bir satır ile kutunun dışında çalışır

    • Tüm etiketleriniz CMS’de tek bir yerde

  • Downsides

    • İyi yapılandırılmış / kullanımı kolay bir CMS'yi unutun - özel gönderi türleri sayfasındaki Etiketler listesi, tüm Etiketleri (yalnızca özel gönderi türü makalelerinde kullanılan etiketleri değil) yanlış sayıyla gösterir.
    • Bir Etikette yapılan değişiklikler, varsayılan "yayın" makalelerinin yanı sıra özel yazı türü makalelerini de etkiler (Etiketi Sil, her iki makalede de onu siler)
    • Farklı Tag işlevlerini ayarlamak daha zor (muhtemelen imkansız): farklı açıklamalar, özel alanlar, görüntüler, vb (en azından çekirdek Wordpress kodunun üzerinde çok fazla özel kodlama olmadan) ...

Yöntem 2 (yukarıdaki yanıtlardan: https://wordpress.stackexchange.com/a/62263/38771 )

Farklı posta tipleri farklı "Etiketler" konfigürasyon / verilerini kullanır.

  • Yararları

    • Farklı / açıkça farklı etiketlerle ilgili işlevler oluşturun : önyüz şablonları, yetenekler, sorgu filtreleri, eylemler)
    • Farklı etiketle ilgili veriler atayın : alanlar verileri veya hatta özel alanlar
    • CMS'de Etiketleri Daha İyi Yönetme
      • Örnek : Bir "yazı" etiketini düzenlemek / silmek, diğer yazı türleri için (benzer şekilde adlandırılmış / slugged) etiketi etkilemez
  • Değiş tokuş

    Kurulum için biraz daha kod

Aslında, çeşitli öğeleri her türlü şekilde gruplandırmanın son derece güçlü bir yoludur. https://codex.wordpress.org/Taxonomies#Custom_Taxonomies


İşte Yöntem 1 için bir örnek: "NBA", "NHL", "Basketbol", "Olimpiyatlar", "Steroidler", "Üniversite" vb. Sayısız konu / lig / spor etiketini kapsayan geniş bir spor sitesi. +100 etiket ve 4 gönderi türü (varsayılan gönderi türü ve 3 özel gönderi türü) olabilir. Olumsuz yönleri, eğer etiket sayımı verileri çok özel ise, bunun için özel bir görünüm yapılabilir. Yazı tipi başına benzer özel etiketlere gelince, henüz açık bir ihtiyaç olduğu görünmüyor (bir tane düşünmek zor ... bir örnek lazım).
MarsAndBack

Evet, ancak farklı yayın türleri için otomatik olarak farklı etiket bağlantı noktaları olmayacak. Tüm yayın türleri için "playoff" etiketinde "/ tag / playoff" yazacaktır. Sonra yeniden yazma kuralları ayarlamanız veya farklı kalıcı bağlantılar oluşturmak için GET paragraflarını kullanmanız gerekir ... Her yazı türü için farklı bir taksonomiyle, her yazı türü için her "playoff" etiketi, Wordpress 'Şablonu kullanılarak özelleştirilebilecek kendi kalıcı bağlantıya sahip olacaktır. Hiyerarşi. NBA, NHL için farklı "playoff" sayfalarının farklı olması iyi bir şey ... Taksonomiler (özel alanlar, taksonomi görüntüsü, açıklama) için özelleştirme seviyesine sahip bir sitede çalıştım
PS

1
Ne dediğini anlıyorum. Öyleyse, eğer CPT başına farklı etiket taksonomileriyle gidecekseniz, bir vergiyi bir terim eklediğinizde / düzenlediğinizde, bunu diğer vergilerin yani vergilerin eşzamanlı senkronize edilmesinde değiştirirsiniz. Örneğin, "Basketbol" u bir kez tanımlayın, diyelim Post vergi vergisi, sonra kaydettiğinizde, "Basketbol" CPT'ler için diğer vergilerde benzersiz bir şekilde yaratılır. Böylece bir etiketi bir kez girin / düzenleyin ve değişiklik birden fazla etiket vergisine yansıtılır. Sonunda bir hedefe etiket yönetimi, artı daha fazla istenen kalıcı bağlantı durumu elde edersiniz.
MarsAndBack

Bu site, birden fazla CPT için aynı temel taksonomi bilgilerini (unvanı) paylaşmanın yanı sıra, farklı CPT'ler için bu taksonomileri (özel alanlar, resimler vb.) Daha da özelleştirmeye yönelik seçenek sunması durumunda gerçekten harika bir yöntem olacaktır. Güzel!
PS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.