web-dev-qa-db-fra.com

Mise à jour du modèle de catégorie pour modifier l'affichage des sous-catégories

Je souhaite mettre à jour mon modèle de catégorie pour afficher les publications de sous-catégorie différemment des publications de catégorie. Je connais assez bien l'édition de modèles Wordpress, mais je connais bien le langage HTML/CSS et assez de PHP pour le comprendre.

Actuellement, mon thème affiche tous les articles de catégorie et de sous-catégorie avec des titres, des vignettes et des extraits avec un bouton. Mais, je ne veux pas que les publications de sous-catégorie soient affichées de la sorte dans la page de catégorie principale. J'aimerais plutôt afficher les catégories comme suit: titre de la sous-catégorie, description de la sous-catégorie, bouton -> tous ces liens pointant vers la page de sous-catégorie. Ensuite, lors de l'affichage des sous-catégories à leur propre niveau, mon thème comporte un modèle distinct qui entrera en jeu.

Je travaille à partir d'un enfant du thème AccessPress Lite. J'ai dupliqué leur archive.php existant et je l'ai renommé category.php. J'ai également dupliqué la boucle utilisée pour afficher le contenu, mais j'ai du mal à comprendre la logique qui permet de déterminer s'il s'agit d'une catégorie/sous-catégorie.

Ma boucle est actuellement:

<?php while ( have_posts() ) : the_post(); ?>
<?php
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <header class="entry-header">
            <h1 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h1>

            <?php if ( 'post' == get_post_type() ) : ?>
            <div class="entry-meta">
                <?php accesspresslite_posted_on(); ?>
            </div><!-- .entry-meta -->
            <?php endif; ?>
        </header><!-- .entry-header -->

        <?php if ( is_search() ) : // Only display Excerpts for Search ?>
        <div class="entry-summary">
            <?php the_excerpt(); ?>
        </div><!-- .entry-summary -->
        <?php else : ?>
        <div class="entry-content">
            <?php if(has_post_thumbnail()){?>
            <div class="entry-thumbnail">
                <?php  the_post_thumbnail('thumbnail'); ?>
            </div>
            <?php } ?>
            <div class="short-content">
            <?php echo accesspresslite_excerpt( get_the_content() , 500 ) ?>
            </div>
            <a href="<?php the_permalink(); ?>" class="bttn"><?php _e('More','accesspresslite')?></a>
            <?php
                wp_link_pages( array(
                    'before' => '<div class="page-links">' . __( 'Pages:', 'accesspresslite' ),
                    'after'  => '</div>',
                ) );
            ?>
        </div><!-- .entry-content -->
    <?php endif; ?>

        </article><!-- #post-## -->
<?php endif; ?>
                ?>
1
Pandy

Vous aurez besoin d’une vérification simple à l’intérieur de votre boucle, la logique étant tout aussi simple. La logique derrière ceci est la suivante:

  • Si un article appartient à la catégorie interrogée actuelle (, AKA la catégorie parente ), cette catégorie lui est associée.

  • Si une publication appartient uniquement à une catégorie enfant de la catégorie interrogée actuelle, la catégorie interrogée actuelle ne lui est pas associée.

Dans cet esprit, il ne nous reste plus qu'à déterminer si la catégorie interrogée est affectée à la publication en cours. Pour cela, nous pouvons utiliser la vérification conditionnelle, has_category() , pour déterminer si la publication a notre catégorie souhaitée ou non, puis utiliser get_queried_object_id() pour obtenir l'ID. de la catégorie actuelle beign consulté

Dans votre boucle, vous pouvez effectuer les opérations suivantes:

$current_category_id = get_queried_object_id();
if ( has_category( $current_category_id ) ) { // Post belongs to the queried category
    // Add your specific markup and code for current queried category
} else { // Post belongs to a child category
    // Add your specific markup and code for child categories
}
0
Pieter Goosen