Seite mit benutzerdefinierten Taxonomielisten?

11

Ich arbeite in einem Restaurant und habe einen benutzerdefinierten Beitragstyp für Gerichte, wie zum Beispiel:

$args = array(
    'labels'=> $labels,
    'public'=> true,
    'publicly_queryable'=>true,
    'show_ui'=>true,
    'show_in_nav_menus'=>true,
    'query_var'=>'dish',
    'rewrite'=>true,
    'capability_type'=>'post',
    'hierarchicial'=>false,
    'menu_position'=>5,
    'supports'=>array(
        'title',
        'editor',
        'thumbnail',
        'excerpt',
        'custom-fields',
        'revisions'
    )   
);  

register_post_type('dish', $args);

Ein Beispiel für eine der benutzerdefinierten Taxonomien, die ich verwenden möchte, ist Folgendes:

register_taxonomy('Main Ingredient', array('dish'), array(
    'hierarchical' => true,
    'label' => 'Main Ingredient',
    'singular_label' => 'Main Ingredient',
    'query_var'=>true,
    'rewrite' => true)
);

Die benutzerdefinierten Taxonomien funktionieren im Administrator einwandfrei, und ich kann myurl.com/main-ingredient/porkeine Liste aller Gerichte mit Schweinefleisch anzeigen.

Was ich tun möchte, ist in der Lage zu sein myurl.com/main-ingredient, eine Liste aller verschiedenen Hauptzutatenwerte zu erhalten.

Ich habe diese Referenz gefunden, genau das versuche ich zu tun.

Aber die Lösung funktioniert bei mir nicht - ich bekomme immer noch einen 404, wenn ich gehe myurl.com/main-ingredient

Irgendwelche Vorschläge, wie das am besten geht?

Jack Johansson
quelle

Antworten:

20

In WordPress ist nichts integriert, um eine "Index" -Seite für Ihre Taxonomie bereitzustellen, wie Ihre Frage impliziert (und ich stimme zu, es sollte eine geben! Aber es gibt keine).

Stattdessen müssen Sie es hacken. Eine Möglichkeit, dies zu tun, besteht darin, eine Seite mit dem Namen "Hauptzutat" mit einem main-ingredientURL-Slug zu erstellen und ihr eine Seitenvorlage für Ihr Thema zuzuweisen , die Sie (möglicherweise) mit dem Namen "Hauptzutatenliste" erstellen werden :

Screenshot zeigt, wo die Seitenvorlage in WordPress festgelegt wird
(Quelle: mikeschinkel.com )

Hier ist ein Ausgangspunkt; Verwenden Sie möglicherweise den Dateinamen page-main-ingredient-list.php für Ihre Seitenvorlage:

<?php
/*
Template Name: Main Ingredient List
*/
get_header();
$main_ingredients = get_terms('main-ingredient');
foreach($main_ingredients as $main_ingredient) {
  $dishes = new WP_Query(array(
    'post_type' => 'dish',
    'post_per_page'=>-1,
    'taxonomy'=>'main-ingredient',
    'term' => $main_ingredient->slug,
  ));
  $link = get_term_link(intval($main_ingredient->term_id),'main-ingredient');
  echo "<h2><a href=\"{$link}\">{$main_ingredient->name}</a></h2>";
  echo '<ul>';
  while ( $dishes->have_posts() ) {
    $dishes->the_post();
    $link = get_permalink($post->ID);
    $title = get_the_title();
    echo "<li><a href=\"{$link}\">{$title}</a></li>";
  }
  echo '</ul>';
}
get_footer();

Und dann sieht die Seite mit einigen Dummy-Daten auf meiner Testseite folgendermaßen aus:

Screenshot einer Taxonomy Index-Seite für eine WordPress-Site

MikeSchinkel
quelle
Hallo Mike, ja das habe ich gemacht. Es hilft nicht.
@Josh - Ich habe den Code, den Sie hier finden, zur functions.phpDatei meines Themas hinzugefügt und bin dann zu http://wp30.dev/main-ingredient/chicken/ ( wp30.devist meine lokale Testseite) gegangen und habe diesen Screenshot erhalten . Wenn es also nicht funktioniert, haben Sie ein Plugin oder einen anderen Code, der dazu führt, dass es nicht funktioniert.
MikeSchinkel
Danke für die Antwort Mike. Das funktioniert bei mir, ist aber nicht das Problem, das ich zu lösen versuche. Ich versuche, eine Liste der Hauptzutaten zu erhalten, indem ich zur obersten Ebene der Taxonomie gehe. Mit anderen Worten, wenn Sie "Huhn" aus Ihrer URL entfernen, sollten Sie eine 404-Seite erhalten. Das ist das Problem, auf das ich stoße.
@ Josh - Okay, das sehe ich jetzt. Entschuldigung, ich habe heute zu viele Fragen beantwortet. Zu Ihrer Information, es gibt in WordPress keine "eingebaute" Möglichkeit, mit dem umzugehen, wonach Sie fragen. Es wäre sehr sinnvoll, wenn es automatisch da wäre, aber derzeit ist es nicht so. Ich werde ein Update schreiben, das eine Problemumgehung darstellt.
MikeSchinkel
3
@Josh - "aber ich hasse es, die großartige integrierte Funktionalität der Postanzeige und Navigation über den Taxonomiebegriff zu verlieren": Ich muss etwas vermissen, weil ich nicht sehe, wie Sie damit etwas verlieren?
MikeSchinkel