decitic* Reporting, Data et Webmastering pour les PME

Afficher les derniers articles avec Get Posts, sans plugin

Etant donné qu’à l’époque je n’y connaissais rien en fonctions WordPress et toutes ces choses, c’est quelque chose que j’ai mis du temps à découvrir et à utiliser. Débuter rend les choses difficiles !

Après des heures et des heures de recherche, la requête « Get Posts » m’était alors apparu comme le Saint Graal. Et le pire, c’est que celle-ci se trouvait sur le codex WordPress

J’ai donc décidé d’en parler, car je trouve que c’est quelque chose qui reste assez dur à trouver quand on est débutant !
Voici comment procéder:

1. Sur une page d’accueil

Ce code affiche la liste des derniers articles, toutes catégories confondues. C’est en ça qu’il a sa place sur une page d’accueil par exemple. C’est le code de base, donné par le codex WP lui-même.

<?php global $post;
$myposts = get_posts(‘numberposts=10');
foreach($myposts as $post) :
?>
<li><span><?php the_time(‘d.m’) ?></span> – <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>

On peut définir le nombre de posts affichés via « numberposts », ainsi que d’autres paramètres, listés dans le codex. On peut par exemple définir une catégorie particulière en écrivant son ID à la main.

Mais écrire l’ID à la main, ça devient fastidieux quand on veut récupérer les derniers articles en différenciant les catégories.

2. Dans les catégories mères

Par exemple, on a les catégories: « bLOG », « MUSiC », ou « iMAGES ». chaque fois, dans le menu, on veut afficher les derniers posts de la catégorie dans laquelle on se trouve.

On peut alors utiliser un seul code dans son menu, sans avoir à insérer un code pour chaque catégorie mère. On peut procéder comme ceci:

<?php
foreach((get_the_category()) as $category):?>
<?php
global $post;
$myposts = get_posts('numberposts=9&category='. $category->category_parent);
foreach($myposts as $post) : ?>
<li><span><?php the_time('d.m') ?></span> - <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<?php endforeach; ?>

Ce code permet de récupérer la liste des 9 derniers articles pour chaque catégorie mère où l’on se trouve. Vous pouvez ensuite customiser la façon dont la liste est displayée, via les classes sur les balises, sur la date, etc.

3. Dans les catégories filles

Dans mon cas, à l’époque j’avais rencontré des problèmes; le code utilisé pour les catégories filles ne fonctionnait pas pour les catégories mères. C’est pour ça que je les ai distingués.

<?php
foreach((get_the_category()) as $category):?>
<?php
global $post;
$myposts = get_posts('numberposts=9&category='. $category->cat_ID);
foreach($myposts as $post) : ?>
<li><span><?php the_time('d.m') ?></span> - <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<?php endforeach; ?>

Comme vous le voyez, la seule chose qui change entre les deux, c’est qu’on a dans le premier cas « category_parent », et dans le second « cat_ID ». Cela oblige à utiliser deux codes différents, et à ce jour je n’ai pas trouvé d’autre solution. Si vous avez des suggestions, n’hésitez pas à envoyer un commentaire !

Laisser un commentaire