web-dev-qa-db-fra.com

Liste des catégories (archives)

Je pense que c'est probablement une question en double, mais je ne trouve pas les termes de recherche pour trouver ce que je cherche.

Est-il possible d'avoir différentes pages de liste de catégories (archives) (ou vues/modèles) en fonction de la catégorie de l'article?

Je travaille sur un site qui utilise le blog en tant que catégorie de niveau supérieur, mais je souhaite que mes autres "pages" ne soient que des catégories de messages de niveau supérieur, chacune avec un aspect personnalisé pour la page de liste/archive de catégories.

Exemple: Aller à/category/blog génère le résultat par défaut category.php, en répertoriant tous les articles de blog récents (classés avec la catégorie de blog de niveau supérieur ou des catégories de blog d'enfants).

Aller à/catégorie/travail répertorie toutes les entrées de travail récentes (classées dans la catégorie de niveau supérieur "travail" et toutes les catégories enfants)

Est-ce possible?

Edit: Voici comment j’ai ma configuration de page category.php (en basant ce modèle "personnalisé" sur le 20th_ten évidemment. À ce stade, devrais-je simplement modifier la partie get_template_part('loop', 'category'); dans le travail si, pour indiquer quelque chose de différent de "loop?"

<?php
/**
 * The template for displaying Category Archive pages.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */

if (is_category('blog')) :
    $GLOBALS['pagetype'] = 'blog';
endif;

if (is_category('work')) :
    $GLOBALS['pagetype'] = 'work';
endif;

get_header(); ?>

        <div id="container">

            <!-- OUTPUT FOR BLOG CATEGORY LIST PAGE -->
            <?php if (is_category('blog')) : ?>
                <div id="content" class="blogList" role="main">
                    <?php
                        $category_description = category_description();
                        if ( ! empty( $category_description ) )
                            echo '<div class="archive-meta">' . $category_description . '</div>';

                    /* Run the loop for the category page to output the posts.
                     * If you want to overload this in a child theme then include a file
                     * called loop-category.php and that will be used instead.
                     */
                    get_template_part( 'loop', 'category' );
                    ?>

                    <div class="triangle"></div>

                </div><!-- #content -->
            <?php endif; ?>
            <!-- /OUTPUT FOR BLOG CATEGORY LIST PAGE -->



            <!-- OUTPUT FOR WORK CATEGORY LIST PAGE -->
            <?php if (is_category('work')) : ?>
            <div id="content" class="blogList" role="main">
                <?php
                $category_description = category_description();
                if ( ! empty( $category_description ) )
                    echo '<div class="archive-meta">' . $category_description . '</div>';

                /* Run the loop for the category page to output the posts.
                                     * If you want to overload this in a child theme then include a file
                                     * called loop-category.php and that will be used instead.
                                     */
                get_template_part( 'loop', 'category' );
                ?>

                <div class="triangle"></div>

            </div><!-- #content -->
            <?php endif; ?>
            <!-- /OUTPUT FOR WORK CATEGORY LIST PAGE -->




        </div><!-- #container -->

<!--Default sidebar only for Blog postings-->
<?php if (is_category('blog')) :
    get_sidebar();
endif;
?>
<?php get_footer(); ?>
1
Keefer

Vous pouvez créer un modèle de catégorie nommé category-foo.php qui sera appliqué uniquement à la catégorie avec slug foo. Vous pouvez ainsi créer un modèle personnalisé pour différentes catégories.

Source - Page Codex pour Modèle de catégorie

Remarque -

Si vous souhaitez apporter des modifications mineures, telles que show foo dans une catégorie-1 et bar sur une autre, il serait bon d’avoir un seul category.php et d’utiliser is_category balises conditionnelles.


Mettre à jour -

Vous pouvez utiliser get_template_part( $slug, $name ) pour utiliser différentes boucles pour différentes catégories -

<?php 
if (is_category('foo')) {
    get_template_part( 'cat', 'foo' );  // It'll load    cat-foo.php
} else (is_category('bar')) {
    get_template_part( 'cat', 'bar' );  //   cat-bar.php
} else { 
    //
}
?>
2
amit