Faire une page de sous catégories

Faire une page de sous catégories dans wordpress

Ici on va voir plusieurs méthodes pour avoir une page listant toutes les sous-catégories d’une catégorie mère dans wordpress.

Dans mon menu, j’ai des pages statiques, puis des catégories. Normalement, lorsque l’on clique sur un onglet de type ‘catégories’, la page renvoie tous les articles de cette catégories. Si en revanche sur l’une de ces catégories, on a plusieurs sous-catégories, on peut vouloir afficher une page qui  liste toutes les sous-catégories ainsi qu’un lien vers les articles correspondants.

Pour y parvenir, on a plusieurs solutions, selon les besoins :

Une liste de sous catégories avec des liens vers les articles

<?php get_header(); ?>

<br />
<div class="explanation" id="zen-explanation" role="article">

<br />
<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php single_cat_title() ?> par catégories</a></h2>
<p>

<?php $cats = get_categories(); foreach ($cats as $cat) { query_posts('showposts=1000&cat='.$cat->cat_ID);

<br />
<h2><?php echo $cat->cat_name; ?></h2>
<p>



<ul>
<?php while (have_posts()) : the_post(); ?>

<br />
<li style="font-weight:normal !important;"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a> - Commentaires (<?php echo $post->comment_count ?>)</li>
<p>

<?php endwhile; ?>
</ul>
<p>

<?php } ?>
</div>
<p>

<?php get_sidebar(); ?>

Ce code, inséré dans votre fichier catégorie ou archive,  va afficher toutes les catégories et sous catégories dans le désordre avec leurs articles correspondants : copie

Une liste de sous catégories avec le nombre d’articles

Si je suis sur la catégorie wordpress par exemple, et que je veux juste afficher les sous- catégories et le nombre de posts correspondants :

<?php get_header(); ?>

<br />
<div class="explanation" id="zen-explanation" role="article">

<br />
<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php single_cat_title() ?> par catégories</a></h2>
<p>



<ul>
<?php wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=3'); ?>
</ul>
<p>

</div>
<p>

<?php get_sidebar(); ?>

Ce qui donne :

categ

Une liste simple de sous catégories

La même chose avec une simple liste des sous-catégories d’une catégorie.

global $ancestor;
$childcats = get_categories('child_of=' . $cat . '&hide_empty=1');
foreach ($childcats as $childcat) {
if (cat_is_ancestor_of($ancestor, $childcat->cat_ID) == false){
echo '

<li>
<br />
<h2><a href="'.get_category_link($childcat->cat_ID).'">';
echo $childcat->cat_name . '</a></h2>
<p>
';
echo '
'.$childcat->category_description.'
';
echo '</li>
<p>
';
$ancestor = $childcat->cat_ID;
}
}?>

Ce qui nous retourne

ca

Voici donc trois façons d’afficher une page de catégorie avec toutes ses sous catégories.