web-dev-qa-db-fra.com

Comment afficher un modèle de liste d'une taxonomie donnée?

J'essaie de comprendre comment afficher une liste de taxonomie spécifique (categorycourses).

Dans functions.php pour le thème j'ai:

//Register custom taxonomy for courses-categories
$course_cat_args = array(
  'hierarchical' => true,
  'labels' => $course_cat_labels, //Other labels set before
  'show_ui' => true,
  'show_admin_column' => true,
  'query_var' => true,
  'rewrite' => array( 'hierarchical' => true )
);

register_taxonomy( 'categorycourses', array('course'), $course_cat_args );

La taxonomie actuelle fonctionne bien dans admin.

Maintenant, j'essaie de créer un modèle pour categorycourses lors de l'interface qui répertorie toutes les catégories de cours.

J'ai examiné la hiérarchie template et j'ai pensé que je devrais créer un fichier avec le nom de taxonomie categorycourses.php

J'ai donc créé un fichier appelé categorycourses.php dans le dossier themes. J'ai aussi essayé de créer categorycourses-categorycourse.php, archive-categorycourses.php mais je continue à avoir une erreur 404.

S'il vous plaît nue avec moi. Je comprends beaucoup de choses dans WP, mais j'apprends seulement à créer des modèles en mode frontal.

Je suis capable de créer des pages d'archivage pour certains types d'articles. Les règles de réécriture, etc., fonctionnent donc sur mon serveur local.

Qu'est-ce que je fais mal?

UPDATE1. J'ai essayé de créer un nom de fichier taxonomy-categorycourses.php et avec le même résultat (erreur 404), j'ai vidé les paramètres de permalink dans admin en les réenregistrant.

J'ai aussi essayé:

$course_cat_args = array(
  'hierarchical' => true,
  'labels' => $course_cat_labels,
  'show_ui' => true,
  'show_admin_column' => true,
  'query_var' => true,
  'rewrite' => array('slug' => 'soup')
);

register_taxonomy( 'categorycourses', array('course'), $course_cat_args );

J'essaie d'accéder au modèle avec http://server/soup mais j'obtiens toujours l'erreur. (après avoir ré-enregistré permalink-settings dans admin)

UPDATE2: * je pense l'avoir compris: * Il ne semble pas exister de modèle pour la "taxonomie racine". Vous devez choisir une catégorie de cours spécifique pour agir en tant que racine.

Dans mon cas, j'ai créé ce fichier:

taxonomy-categorycourses-semester2014.php

Lorsque j'accède ensuite à http://server/soup/semester2014, le modèle attendu (taxonomy-categorycourses-semester2014.php) est affiché.

Mais il semble impossible de créer un "modèle racine pour une taxonomie" comme http://server/soup/. Même si je crée un modèle appelé taxonomy-categorycourses.php, cela ne fonctionne pas.

Est-ce correct?

Ce que vous voulez faire est impossible sans un type de modèle page.php. Il n'y a pas de hiérarchie de modèles qui prend en charge ce que vous souhaitez atteindre. Cela fonctionne exactement de la même manière avec les catégories. taxonomy-categorycourses.php n'affichera pas une liste de categorycourses, donc category-categorycourses.php si categorycourses était une catégorie normale. Si vous cliquez sur categorycourses, vous serez dirigé vers une page qui affichera les publications de cette taxonomie ou de cette catégorie.

Si vous devez afficher une liste de termes ou de catégories dans une taxonomie, vous devez créer un modèle page.php personnalisé et utiliser get_the_terms() pour obtenir la liste de tous les termes/catégories associés à une taxonomie. wp_list_categories( $args ) affichera la liste afin que vous puissiez la modifier pour afficher ce dont vous avez besoin. Vous pouvez faire une copie du modèle page.php de vos thèmes et l'appeler comme suit: page-tax.php Vous devez modifier la boucle dans ce modèle. Voici un exemple pour le thème vingt-quatre.

 <?php
/**
 * Template Name: Page Tax
 */
get_header(); ?>

<div id="main-content" class="main-content">

    <div id="primary" class="content-area">
        <div id="content" class="site-content" role="main">

        <?php //list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin)

            $taxonomy     = 'brands';
            $orderby      = 'name'; 
            $show_count   = 0;      // 1 for yes, 0 for no
            $pad_counts   = 0;      // 1 for yes, 0 for no
            $hierarchical = 1;      // 1 for yes, 0 for no
            $title        = '';

            $args = array(
              'taxonomy'     => $taxonomy,
              'orderby'      => $orderby,
              'show_count'   => $show_count,
              'pad_counts'   => $pad_counts,
              'hierarchical' => $hierarchical,
              'title_li'     => $title
            );

        ?>

        <ul>
            <?php wp_list_categories( $args ); ?>
        </ul>

        </div><!-- #content -->
    </div><!-- #primary -->
    <?php get_sidebar( 'content' ); ?>
</div><!-- #main-content -->

<?php
get_footer();

Rappelez-vous simplement de changer $taxonomy = 'brands'; en votre nom de taxonomie. Vous pouvez maintenant créer une nouvelle page dans l'écran "Ajouter une nouvelle page", définir votre slug de page sur le nom de la taxonomie et sélectionner ce modèle. Vous pouvez maintenant entrer http://server/categorycourses/ et vous serez redirigé vers la page que vous avez créée.

Réponse originale Votre réponse est exacte dans le lien que vous avez fourni. Le codex le dit parfaitement, il vous suffit de le mettre en œuvre correctement. Votre modèle devrait s'appeler taxonomy-categorycourses.php. S'il vous plaît se référer au lien que vous avez fourni

UPDATE1 Hit me comme une tonne de briques, avait le même problème il y a un moment avec un CPT, et j'ai raté ça quand j'ai regardé votre code. Pour que votre modèle personnalisé fonctionne, vous devez ajouter 'has_archive' => true, à vos arguments lors de l’enregistrement de votre type de publication personnalisé . Pour votre information, allez vérifier enregistrer des taxonomies et enregistrer des types d'article personnalisés

5
Pieter Goosen