Taxonomie, Begriffe und Vorlagendateien

7

Ich habe Post-Typ "Produkt" und hierarchische Taxonomie "Typen" angehängt. In dieser Taxonomie habe ich Begriffe: "chemische Reinigung", "Waschmaschine" usw. Mit mehreren Unterbegriffen zu jedem Begriff.

In meiner Situation muss ich Folgendes anzeigen, z.

  1. http://example.com/types/washer -> Alle Unterbegriffe darauf anzeigen
  2. http://example.com/types/washer/ {subterm} -> Alle Beiträge darauf anzeigen

Meine Fragen sind:

  1. Wie erhalte ich eine Permalink-URL für übergeordnete Begriffe? Ich versuche die URL oben, aber es ergibt sich 404.
  2. Wie funktionieren die Vorlagendateien für diese Art von Problem?
    1. ist taxonomy-types-washer.phpgenug für Fall # 1? oder soll ich dort taxonomy-types.phpdie logik erstellen und erstellen?
    2. Nach dem Scannen der Vorlagenhierarchie muss ich möglicherweise taxonomy-types-{term_parent}.phpalle Unterbegriffe und taxonomy-types.phpalle Produkte in Unterbegriffen auflisten.
    3. Um jedes Produkt anzuzeigen, muss ich letztendlich erstellen single-product.php
  3. Auf ein etwas anderes Problem. Ich finde, das archive-{posttype}.phpfunktioniert nicht, wenn ich keinen Beitrag dazu habe. Gibt es dafür eine Lösung? ( Soll ich eine andere Frage erstellen oder bei dieser bleiben )?

AKTUALISIEREN

Ich habe meine rewrite_rulesOptionen überprüft und es werden überhaupt keine [Typen] aufgelistet. Ich weiß nicht warum. Um es zu testen, ändere ich meine Schnecke in product-types, spüle Permalink und es listet dies auf:

[product-types/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/([^/]+)/?$] => index.php?types=$matches[1]

Ich denke, es ist jetzt registriert. Ich versuche, eine URL zu laden product-types/washer, die auf 404 geht. Ich versuche, eine URL zu laden index.php?types=washer. Es geht auch 404. Im Moment habe ich diese Dateien:

  • taxonomy-types-washer.php
  • taxonomy-types.php

Also, ich weiß nicht, was mit diesem falsch ist :(.

UPDATE # 2

Ich finde das Problem. Es ist, weil ich vermisst habe'rewrite'=>array('hierarchical'=>true)

Hier ist das Neue rewrite_rules:

[product-types/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/(.+?)/?$] => index.php?types=$matches[1]
Ariefbayu
quelle
Ich weiß, dass dies unter wordpress.stackexchange.com/questions/5308/… möglich ist, jedoch für "nicht hierarchische" Taxonomien.
Bainternet
Sie sollten eine neue Frage für Punkt 3 erstellen.
scribu
@scribu, ich werde diese Frage heute Abend erstellen, wenn ich wieder zu Hause bin.
Ariefbayu

Antworten:

6

Diese Arten von URLs werden seit WP 3.1 unterstützt:

register_taxonomy( 'types', 'post', array(
  'hierarchical' => true,
  'rewrite' => array( 'hierarchical' => true ),
  ...
);

Denken Sie daran, die Umschreiberegeln nach der Änderung zu löschen.

Die Vorlage, die Sie sowohl für übergeordnete als auch für untergeordnete Begriffe verwenden würden, lautet taxonomy-types.php:

$current_term = get_queried_object();

if ( 0 == $current_term->parent ) {
  // it's a parent term; display it's child terms using wp_list_categories() etc.
} else {
  // it's a child term; display the posts using The Loop etc.
}
Scribu
quelle