Je travaille sur un site de restaurant et j'ai un type de message personnalisé pour les plats, comme suit:
$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);
Voici un exemple de taxonomies personnalisées que je veux utiliser:
register_taxonomy('Main Ingredient', array('dish'), array(
'hierarchical' => true,
'label' => 'Main Ingredient',
'singular_label' => 'Main Ingredient',
'query_var'=>true,
'rewrite' => true)
);
Les taxonomies personnalisées fonctionnent bien dans l’administrateur, et je peux aller à myurl.com/main-ingredient/pork
et voir une liste de tous les plats contenant du porc.
Ce que je veux faire, c'est pouvoir appuyer sur myurl.com/main-ingredient
et obtenir une liste de toutes les valeurs des principaux ingrédients.
J'ai trouvé this reference, ce qui est exactement ce que j'essaie de faire.
Mais la solution ne fonctionne pas pour moi - je reçois toujours un 404 en allant à myurl.com/main-ingredient
Des suggestions sur la meilleure façon de faire cela?
Il n’existe rien dans WordPress qui fournisse une page "index" pour votre taxonomie, car votre question implique qu’il devrait y avoir (et je suis d’accord, il devrait y en avoir! Mais ce n’est pas le cas.)
Au lieu de cela, vous devez le pirater et une façon de le faire est de créer une page appelée "Ingrédient principal"} avec une adresse URL main-ingredient
et de lui attribuer un modèle de page que vous utiliserez. créer (peut-être) appelé "Liste principale d'ingrédients":
(source: mikeschinkel.com )
Voici un point de départ. utilisez peut-être le nom de fichier page-main-ingredient-list.php
pour votre modèle de page:
<?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();
Et puis voici à quoi ressemble la page avec des données factices sur mon site de test: