Créer un module wordpress affichant les 5 derniers articles dans la sidebar

Comment un module WordPress affichant les 5 derniers articles dans la sidebar ?

L’idée est donc d’afficher un bloc dans la sidebar de mon template. Ce bloc affichera les titres et un résumé des derniers articles.

Nous devons donc intervenir dans le fichier sidebar.php du template. Ce fichier contient un test php recherchant l’existence de widget :

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar(__('Left Sidebar','theme918')) ) : else : ?>
... / ...
... / ...
<?php endif; ?>	

Ces lignes en php indiquent à WordPress d’effectuer les instructions du « else » (Lignes 2 & 3) si les administrateurs n’ont pas utilisé de widget (Apparence > Widgets). C’est à cet emplacement que nous allons écrire notre module :

<?php 
echo ' <h1>Actualités </h1>
<div id="lesNews">
<ul>';
$lesNews = get_posts('numberposts=5&order=ASC');

foreach( $lesNews as $post ) :
	echo '<li><a href="'; the_permalink();  echo '" class="news">';
	the_title();
	echo '</a>';
	the_excerpt();
	echo '</li>';
endforeach;

echo'</ul>
</div>';
?>

Après l’ouverture du php, affichons le titre du bloc (‘Actualités’) au niveau <h1> (ligne 2), Créons un bloc identifié ‘lesNews’ pour le css (ligne 3), puis ouvrons une liste <ul> pour lister les articles (ligne 4). La ligne suivante est spécifique à wordpress, il s’agit d’utiliser une fonction php interne à wordpress : get_posts. Cette fonction va extraire des articles (des posts) de la base de données (de la table wp_posts). La richesse des paramètres acceptés permet d’affiner le résultat, mais ici prenons simplement les 5 derniers. (‘numberposts=5&order=ASC‘). Il aurait été simple de choisir une autre sélection, par exemple un article au hasard (‘numberposts=1&order=rand‘), ou tous les articles de la catégoie 4 classés par ordre alphabétique du titre (‘category=5&orderby=title‘).

Le résultat de cette fonction est placé dans une variable tableau $lesNews.

La ligne suivant (8) utilise la boucle php foreach pour parcourir chaque valeur de la variable tableau $lesNews (variable remplie du résultat de l’extraction des articles de la base). Chaque valeur (chaque article) récupérée sera placée dans la variable $post. Il est alors possible d’afficher les données du post (de l’article). Dans ce module, nous affichons le titre ( the_title() ) dans un lien <a> pointant par le lien permanent ( the_permalink() ) vers l’article. L’affichage de l’extrait de l’article se fait en utilisant the_excerpt(). Il ne reste qu’à fermer l’élément de liste </li> (ligne 12) avant de fermer la boucle avec endforeach;.

Enfin, fermons proprement la liste et le div puis le php

Notons quand même que toutes les données du post ne sont pas accessibles en utilisant la fonction get_post (par exemple le contenu de l’article the_content()).
Il faut d’abord utiliser la fonction interne setup_postdata() avec la variable $post comme argument.

<?php
$lesNews = get_posts('numberposts=5&order=ASC');
foreach($lesNews as $post) :

 setup_postdata($post);
 the_content();

endforeach;
?>

Tags: , , , ,
Posted in PHP, wordPress | Comments (3)

3 Responses to “Créer un module wordpress affichant les 5 derniers articles dans la sidebar”

  1. darknote Says:

    si on veut la date et le titre et non le résumé?
    <?php
    echo ' Actualités

    ‘;
    $lesNews = get_posts(‘numberposts=5&order=ASC’);

    foreach( $lesNews as $post ) :
    echo ‘‘;
    the_date();
    echo ‘
    ‘;
    the_title();
    echo  »;
    endforeach;

    echo’
    ‘;
    ?>

  2. Ciera parquet flottant 81 Says:

    Merci pour ces précieuses infos !

  3. kantandane Says:

    Merci infiniment !
    Simple, clair, efficace !

Leave a Reply

*

 
#JeSuisCharlie