it-swarm.com.de

Seite mit benutzerdefinierten Taxonomielisten?

Ich arbeite an einem Restaurantstandort und habe einen benutzerdefinierten Post-Typ für Gerichte, wie z.

$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 Admin einwandfrei, und ich kann myurl.com/main-ingredient/pork aufrufen und eine Liste aller Gerichte mit Schweinefleisch darin anzeigen.

Ich möchte in der Lage sein, myurl.com/main-ingredient zu drücken und eine Liste aller Werte der Hauptzutaten zu erhalten.

Ich habe this reference gefunden, genau das versuche ich zu tun.

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

Irgendwelche Vorschläge, wie man das am besten macht?

11
user2814

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

Stattdessen müssen Sie es hacken und eine Möglichkeit, dies zu tun, besteht darin, eine Seite mit dem Namen "Hauptbestandteil" mit einem main-ingredient URL-Slug zu erstellen und ihr eine Seitenvorlage für Ihr Thema zuzuweisen, das Sie erstellen werden (vielleicht) genannt "Hauptzutatenliste":

 Screenshot showing where to set Page Template in WordPress 
(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 so sieht die Seite mit einigen Dummy-Daten auf meiner Testsite aus:

Screenshot of a Taxonomy Index page for a WordPress Site

20
MikeSchinkel