Wie füge ich Tags zum benutzerdefinierten Beitragstyp hinzu?


28

Ich habe einen benutzerdefinierten Beitragstyp namens portfoliound ich versuche, die Taxonomie der Tags hinzuzufügen. Wie mache ich das?


@chifliiiii Wenn ich das tue, sind die Kategorien und Tags die gleichen wie die, die für Posts verwendet werden. Wie erhalte ich Kategorien und Tags, die nur für den neuen Beitragstyp gelten?
Troy Templeman

@chifliiiii Wie werden die Tags in der Vorlage angezeigt?
Max

Antworten:


15

Wie folgt: (In "Portfolio" wird die Taxonomie für einen Beitragstyp registriert

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 es wäre wahrscheinlich wert, die WordPress-Codex-Seite für die Registrierung von Taxonomien zu besuchen
Stephen S.

8
Nur ein Hinweis, dass hierdurch eine völlig neue Taxonomie namens "tag" erstellt wird, anstatt die vorhandene Taxonomie "post_tag" zum benutzerdefinierten Post-Typ hinzuzufügen.
Jake

@chifliiiii wie man diese Tags im Beitrag einseitig mit Tags Links bekommt, wie man eine Vorlage für Tag-Seite erstellt
Dinesh

1
Ich stimme Jake zu, ich habe das Gefühl, dass dies das Problem nicht löst. Die Antwort von @Marcus sollte die Antwort sein, die als akzeptiert markiert ist.
Craig Wayne

58

Oder einfach hinzufügen:

'taxonomies' => array('post_tag')

Eine Reihe registrierter Taxonomien wie categoryoder post_tag, die für diesen Beitragstyp verwendet werden. Dies kann anstelle eines register_taxonomy_for_object_type()direkten Anrufs verwendet werden. Benutzerdefinierte Taxonomien müssen noch registriert werden register_taxonomy().

zu dem $argsArray in der functions.php-Datei, in dem Sie den benutzerdefinierten Beitragstyp mit erstellen register_post_type().


2
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu: Warum könnte dies das Problem lösen?
fuxia

5

Benutze das:

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

Verwenden Sie einfach diesen Code, es kann Ihnen helfen

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

Eine abgespeckte Version der bereits akzeptierten Antwort. Dies fügt auch eine ganz neue Taxonomie hinzu, anstatt die vorhandene 'post_tag'-Taxonomie zu verwenden.
acidrums4

0

Methode 1 (aus den obigen Antworten: https://wordpress.stackexchange.com/a/106211/38771 )

Verschiedene Beitragstypen verwenden dieselben "Tags" -Daten des Standard-Beitragstyps.

  • Leistungen

    • Alles (sollte) funktioniert von Anfang an mit einer Zeile

    • Alle Ihre Tags an einem Ort im CMS

  • Nachteile

    • Vergessen Sie ein gut strukturiertes / benutzerfreundliches CMS - die Liste der Tags auf der Seite mit den benutzerdefinierten Beitragstypen zeigt alle Tags (nicht nur die Tags, die in Artikeln mit benutzerdefinierten Beitragstypen verwendet werden) mit der falschen Anzahl ...
    • Änderungen an einem Tag wirken sich sowohl auf die Standardartikel "nach" als auch auf die benutzerdefinierten Artikel des Post-Typs aus. (Löschen eines Tags löscht es in beiden Artikeltypen.)
    • Es ist schwieriger (möglicherweise unmöglich), eindeutige Tag-Funktionen einzurichten: unterschiedliche Beschreibungen, benutzerdefinierte Felder, Bilder usw. (zumindest nicht ohne viel benutzerdefiniertes Coding auf dem Wordpress-Kerncode) ...

Methode 2 (aus den obigen Antworten: https://wordpress.stackexchange.com/a/62263/38771 )

Verschiedene Beitragstypen verwenden unterschiedliche "Tags" -Konfigurationen / -daten.

  • Leistungen

    • Erstellen Sie verschiedene / klar unterscheidbare Funktionen in Bezug auf Tags : Frontend-Vorlagen, Funktionen, Abfragefilter, Aktionen.
    • Weisen Sie verschiedene tagbezogene Daten zu : Felddaten oder sogar benutzerdefinierte Felder
    • Tags in CMS besser verwalten
      • Beispiel : Das Bearbeiten / Löschen eines "Post" -Tags wirkt sich nicht auf das (ähnlich benannte / gelöschte) Tag für die anderen Post-Typen aus
  • Abtausch

    Ein bisschen mehr Code zum Einrichten

In Wahrheit sind sie eine äußerst mächtige Möglichkeit, verschiedene Gegenstände auf verschiedenste Weise zu gruppieren. https://codex.wordpress.org/Taxonomies#Custom_Taxonomies


Hier ist ein Beispiel für Methode 1: Eine große Sportwebsite, die zahlreiche Themen / Ligen / Sportarten mit Tags wie "NBA", "NHL", "Basketball", "Olympics", "Steroids", "College" usw. abdeckt. Es macht keinen Sinn, +100 Tags und 4 Beitragstypen (Standardbeitragstyp und 3 benutzerdefinierte Beitragstypen) zu duplizieren und zu verwalten. Was die Nachteile angeht, wenn die Tag-Zähldaten so speziell sind, kann eine benutzerdefinierte Ansicht dafür erstellt werden. Bei ähnlichen benutzerdefinierten Tags pro Beitragstyp scheint es noch keinen offensichtlichen Bedarf zu geben (versuchen Sie, sich einen zu überlegen ... brauchen Sie Beispiele).
MarsAndBack

Ja, aber es wird nicht automatisch verschiedene Tag-Permalinks für verschiedene Beitragstypen geben. Ein Tag "Playoffs" hat "/ Tag / Playoffs" für alle Beitragstypen. Dann müssen Sie Umschreiberegeln einrichten oder GET-Parameter verwenden, um unterschiedliche Permalinks zu erstellen ... Mit einer unterschiedlichen Taxonomie für jeden Post-Typ verfügt jedes "Playoffs" -Tag für jeden Post-Typ über einen eigenen Permalink, der mithilfe von Wordpress-Vorlagen angepasst werden kann Hierarchie. Das ist gut, wenn verschiedene "Playoffs" -Seiten für NBA, NHL unterschiedlich sind ... Ich habe an einer Site mit diesem Anpassungsgrad für Taxonomien gearbeitet (benutzerdefinierte Felder, Taxonomiebild, Beschreibung)
PS

1
Ich verstehe, was du sagst. Wenn Sie also unterschiedliche Tag-Taxonomien pro CPT verwenden, wie wäre es, wenn Sie einen Begriff in einer Steuer hinzufügen / bearbeiten, der in anderen Steuern geändert wird, dh in synchronisierten eindeutigen Begriffen über die Steuern hinweg. B. definieren Sie "Basketball" einmal, sagen wir in Post-Tags-Steuer, und wenn Sie auf Speichern klicken, wird "Basketball" auch für CPTs auf einmal für andere Steuern erstellt. Geben Sie also ein Tag einmal ein bzw. bearbeiten Sie es, und die Änderung wirkt sich auf mehrere Tag-Steuern aus. Am Ende erhalten Sie eine Tag-Verwaltung an einem Ziel sowie eine wünschenswertere Permalink-Situation.
MarsAndBack

Ja, das wäre eine großartige Methode, wenn die Site dieselben grundlegenden Taxonomie-Informationen (Titel) für mehrere CPTs verwendet und die Möglichkeit bietet, diese Taxonomien (benutzerdefinierte Felder, Bilder usw.) für verschiedene CPTs weiter anzupassen. Nett!
PS
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.