Comment lister les articles récents par catégories

14Nov, 2017
De base, le CMS WordPress permet de lister les derniers articles, sans aucun filtre. Il peut être pratique de tout lister sans ce filtre, mais pour des résultats plus poussés et, dans certains cas, un meilleur référencement ou une meilleure expérience utilisateur (la désormais célèbre UX), il faut parfois lister les derniers articles catégorie par catégorie. Pas besoin d’avoir un site énorme pour utiliser cette astuce WordPress, un site d’association peut en avoir besoin.L’avantage de créer un site sous WordPress est que l’on peut tout faire, pour peu que l’on passe par les plugins ou que l’on mette les mains dans le code.

Les plugins peuvent être très pratiques, le problème est qu’ils réduisent énormément les performances du site web. Mieux vaut passer 5 minutes à trouver le code existant et l’inclure dans le thème enfant de votre site que d’utiliser un plugin lourd, parfois mal sécurisé, qui fait tout et rien et qui plombe la vitesse du site. Je vous propose donc une solution sans plugin pour afficher ces articles.

Voici la solution pour lister les derniers articles catégorie par catégorie

Dans functions.php, il faut ajouter ce code

function pop_articleparcategorie() {
// the query
$the_query = new WP_Query( array( 'category_and' => '39', 'posts_per_page' => 10 ) );
// The Loop
if ( $the_query->have_posts() ) {
$string .= '
<ul class="articlesparcategorie widget_recent_entries">';
while ( $the_query->have_posts() ) {
$the_query->the_post();
if ( has_post_thumbnail() ) {
$string .= '
<li>';
$string .= '<a href="' . get_the_permalink() .'" rel="bookmark">' . get_the_post_thumbnail($post_id, array( 50, 50) ) . get_the_title() .'</a></li>

';
} else {
// if no featured image is found
$string .= '
<li><a href="' . get_the_permalink() .'" rel="bookmark">' . get_the_title() .'</a></li>

';
}
}
} else {
// no posts found
}
$string .= '</ul>

';
return $string;
/* Restore original Post Data */
wp_reset_postdata();
}
// Add a shortcode
add_shortcode('articlesparcat', 'pop_articleparcategorie');

// Enable shortcodes in text widgets
add_filter('widget_text', 'do_shortcode');

Petites explications

Le code va chercher les 10 derniers articles de la catégorie 39

 new WP_Query( array( 'category_and' => '39', 'posts_per_page' => 10 ) );

Ensuite, soit ajouter un widget « text » et inclure le shortcode

[[articlesparcat]]

Soit ajouter dans sidebar.php le code

<?php echo pop_articleparcategorie() ; ?>

Dans sidebar ou ailleurs, c’est à vous de voir.

Pour plusieurs listes d’articles récents catégorie par catégorie, il faut ajouter plusieurs fois le code complet, en modifiant le nom de la fonction, en adaptant l’ID de la catégorie et en adaptant le shortcode final.

Il faudra jouer avec les if et elseif pour afficher la bonne liste en fonction de vos critères par la suite, ou utiliser le plugin « custom sidebars ».

N’oubliez pas d’ajouter un peu de css pour peaufiner l’affichage, c’est toujours plus sympa.

En voici un vite fait

ul.articlesparcategorie {
list-style-type: none;
}
.articlesparcategorie img {
float:left; 
padding:3px;
margin:3px;
border: 3px solid #EEE;
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *