Vous souhaitez afficher les derniers posts d’une catégorie spécifique ailleurs que dans une page catégorie ? Dans un Widget, sur une page distincte ? Par défaut WordPress n’offre pas de telle option. 2 solutions s’offrent à vous : un plugin permettant de créer des shortcodes que vous pouvez afficher sur vos pages ou dans des widgets, ou du code pour les puristes.
Si votre but est simplement d’afficher les derniers articles d’une catégorie dans une page, alors contentez-vous d’utiliser la page de la catégorie en question, elle est faite pour cela. Vous pouvez même ajouter une description aux pages catégories si vous en avez besoin.
Si vous souhaitez afficher des liens vers vos catégories, ou une catégorie en particulier, utilisez le Widget “Catégories” ou ajoutez les directement via vos menus de navigation.
Plan de l'article
ToggleAfficher les derniers posts d’une catégorie en dehors de la boucle
En revanche, si votre souhait est d’afficher les derniers articles d’une rubrique précise dans une page distincte ou dans la sidebar, alors il vous faudra bricoler un peu. En effet, le widget qui permet d’afficher tous les derniers articles, ne permet pas de filtrer ceux-ci, tout comme il n’existe pas de shortcode pour les afficher en dehors de la boucle.
Heureusement pour vous, chez WordPress Pour les Nuls, nous avons 2 solutions à vous proposer pour y arriver facilement.
Méthode 1. Afficher les articles récents d’une catégorie à l’aide d’un Widget
Cette méthode est la plus simple, idéale pour les utilisateurs de WordPress qui ne maîtrisent pas le code. Cependant, elle s’avère aussi la plus lourde en consommation de ressources.
Commencez par télécharger et installer le plugin “Recent Posts Widget Extended“. Si vous ne savez pas comment installer un plugin, suivez notre guide “installer un plugin wordpress étape par étape”.
Une fois le plugin activé, rendez-vous dans le menu “Apparence” > “Widgets”, et ajoutez le Widget “Recent Posts Extended” à la barre latérale de votre choix.
Une fois que vous avez glisser le Widget dans la colonne, on vous proposera diverses options, telles que “Limiter à la catégorie“, qui vous permettras donc de filtrer les derniers articles à une catégorie spécifique”. Mais vous pouvez bien évidemment, exploiter tous les autres filtres à votre guise.
Dans les différents filtres, vous pourrez par exemple filtrer les articles liés à une étiquette, choisir d’exclure l’article que l’on est occupés à consulter, d’ignorer les articles épinglés, etc…
Sauvegardez, et observez le résultat dans votre sidebar.
Méthode 2. Afficher les articles récents d’une catégorie à l’aide d’un Shortcode
Toujours avec le même plugin, vous avez également la possibilité d’afficher les derniers articles issus d’une rubrique définie à l’aide de Shortcode, ce qui vous permet de les afficher à peu près n’importe ou dans votre site/blog.
Pour cela, il vous suffit d’ajouter le shortcode suivant :
[ rpwe limit="10" excerpt="true" cat="5"]
Suite à petit bug d’affichage, remplacer “[” par une “[“
Dans le contenu d’une page ou d’un Widget. L’exemple ci-dessus affichera les 10 derniers posts de la catégorie “5”, et affichera le résumé de l’article en dessous du titre. Si vous ne savez pas comment trouver l’ID de la catégorie, consultez notre guide “comment trouver l’ID d’une catégorie dans WordPress“. Vous pouvez bien évidemment modifier ces valeurs selon votre besoin.
Méthode 3. Afficher les articles récents d’une catégorie à l’aide de code PHP.
Pour les puristes, il reste une 3ème méthode, ajouter du code selon vos besoins. J’insiste sur le “selon vos besoins”, puisqu’une fois n’est pas coutume, l’ajout de code est souvent bien moins gourmand en ressources, car on se contente d’ajouter uniquement ce dont on à besoin, sans surcharger le site avec de nombreuses options inutiles.
Ajoutez la fonction suivante à votre fichier functions.php : ( bien sur, vous pouvez la customiser à votre guise )
<?php
// afficher les derniers articles d'une catégorie
// Utilisation : wppln_last_posts('ID DE LA CATEGORIE','NBRE DE POSTS A RETOURNER','AFFICHER LE RESUME');
function wppln_last_posts($cat_id,$nbr_post,$excerpt) {
$query = new WP_Query("cat=$cat_id&posts_per_page=$nbr_post");
echo '<ul>';
while($query -> have_posts()) :
$query->the_post();
echo '<li><a href="'.get_the_permalink().'" rel="bookmark">'.get_the_title().'</a></li>';
if($excerpt == 'true') :
echo '<ul><li>'.get_the_excerpt().'</li></ul>';
endif;
endwhile;
wp_reset_postdata();
echo '</ul>';
}
?>
Ensuite, dans la ou vous souhaitez afficher les derniers articles, ajoutez simplement la fonction “wppln_last_post(); en paramétrant les 3 options suivantes :
$cat_id = ID de la catégorie à afficher. (chiffre)
$nbr_post = nombre de posts à retourner. (chiffre)
$excerpt = afficher ou non le résumé. (true or false)
Ce qui donne donc :
wppln_last_posts('5','10','true');
Pour afficher les 10 derniers posts de la catégorie “5” en affichant le résumé de chaque article.
22 Comments
Euh, petit problème : le code de la méthode 2 (shortcode) n’est pas présent sur la page…
Ah oui, non, pardon, j’avais compris que vous donniez tout le code pour fabriquer un shortcode. Là, il s’agit du shortcode correspondant à l’extension.
Bon, en fait, pour répondre à mon besoin, il faut que je transforme la solution 3 en shortcode.
Bonjour Pierre, quel est votre besoin exact ?
Je viens de me rendre compte également que le shortcode n’était pas affiché. C’est corrigé.
Mon besoin est d’afficher dans un article ou une page une liste d’articles d’une catégorie ou correspondant à une étiquette.
Autrement dit, lancer une boucle wordpress dans un article. Avec des attributs qui me permettront, de spécifier la catégorie ou l’étiquette.
Actuellement, j’utilise pour cela l’extension Shortcode Ultimate, mais j’aimerais m’en passer pour simplifier et alléger mon site.
Je pense que ça ne doit pas être très compliqué… Je vais tenter la chose, ça me permettra de progresser un peu. 😉
Dans ce cas, utilise ACF et tu lies la catégorie ou l’étiquette à la page en question. Ensuite tu fais une boucle pour lister les articles de la catégorie ou étiquette en question.
Bonjour, le code php me donne “Fatal error : Call to undefined function wppln_last_post() in (…)”.
Bonjour,
avez-vous bien ajouté la fonction dans votre fichier functions.php ?
Bonjour,
Je viens de m’apercevoir d’une erreur que tu as mis et qui cause cette erreur. Car tu as mis en nom de fonction “wppln_last_posts” alors que tu appels la fonction “wppln_last_post” tu as oublié le s à “posts”
Bien vu ! Merci pour ce retour. C’est corrigé !
bonjour, j’ai l’impression que le shortcode de la solution 2 est erroné…
Bonjour Xavier, avez-vous un message d’erreur particulier ?
Quelques erreurs dans le code php…
wp_reset_postdata;
C’est une fonction, il faut mettre les parenthèses : wp_reset_postdata();
Et sauf erreur de ma part, les fonctions the_permalink(), the_title(), etc. font déjà une sortie formaté dans le html, donc pas possible de les concaténer dans un echo, pour cela il faudrait utiliser les versions get (get_the_permalink(), get_the_title(), etc.).
Pfiu, bien vu !
Cela m’arrive de coder en live dans les tutos, sans tester le code, et sans réfléchir 😀
Merci pour toutes ces corrections, le code est à jour.
Bonjour
pouvez vous m’indiquer ou trouver le code d’une page dans laquelle je veux insérer votre fonction
désolé pour cette question qui peux paraître bête, mais je me suis arrêté à la programmation à l’époque du turbo pascal, oui, je suis un dinosaure…:;
D’avance, merci
Bonjour Fabrizio, je n’ai pas compris votre question, de quel code parlez-vous ?
Bonjour,
Malheureusement, le shortcode ne s’affiche pas dans votre article…et c’est juste ce dont j’ai besoin! Je n’arrive pas à modifier la fonction php en fonction d’appel shortcode…Merci!
Salut Milan, désolé je viens seulement de voir ton commentaire. En effet il y’avait un petit bug, le shortcode est maintenant visible.
Bonjour, à quel endroit faut-il appeler la fonction svp ? (Dans un fichier, sur l’interface de wordpress …?)
Bonjour Léa, votre commentaire était passé à la trappe, je ne l’avais pas vu !
Cela s’ajoute comme indiqué dans le fichier functions.php de votre thème enfant
Bonjour,
Je cherche à organiser ma partie blog. Habituellement elle organise les articles de manière chronologique. Cependant, j’aimerai que ceux-ci apparaissent par catégorie? ( exemple : assurance (tous les articles qui traitent de l’assurance), immobilier, scolarité etc… des blocs par catégorie et non par date de parution, et à l’intérieur des blocs, les articles les plus récents de la catégorie. J’utilise Elementor, mais ne trouve rien sur le sujet
Merci d’avance pour votre aide
Bonjour Clem,
Avec Elementor tu peux faire sans souci un bloc pour chaque catégories avec le widget post archive, et dans la requête, filtrer par catégories.