Sous WordPress, afficher une liste d’articles dans une page ou un article

Lors d’une utilisation de WordPress en tant que CMS, il est parfois utile d’afficher une liste d’articles récents dans un template de page (le fichier « page.php » du thème) ou dans celui des articles (le fichier « single.php »).

Un exemple récent : une association décrit chacun de ses domaines d’action dans des articles, et publie ensuite régulièrement des actions en rapport avec ce domaine d’action. Nous souhaitons, dans notre exemple, relier l’article d’un domaine d’action aux articles de la catégorie contenant les actions.

Il est possible de stocker la relation entre les articles et les catégories de plusieurs manière. Nous utiliserons dans notre exemple un champ personnalisé. Depuis l’interface d’administration de WordPress, ajouter un champ personnalisé ID-De-Categorie à chacun des articles de domaines d’action. La valeur doit correspondre à l’identifiant en base de données de la catégorie à relier. Pour obtenir ces identifiants, ouvrir le menu « Articles → Catégories » et survoler les liens de vos catégories. Les URLs de ces liens contiennent les identifiants (sous WordPress 3.0, l’identifiant est dans l’attribut « tag_ID »).

La suite des opérations est en PHP. La fonction « get_posts », fournie par WordPress, récupère une liste d’articles de la base de données. Par défaut il s’agit des cinq derniers articles du site toutes catégories confondues. Mais elle se configure via une table de paramètres. On utilisera par exemple :

  • 'numberposts' : le nombre d’articles à ramener ;
  • 'category' : l’identifiant d’une catégorie ;
  • 'orderby' : un champ de la requête SQL ('post_date' par défaut) ;
  • 'order' : 'asc' ou 'desc' (par défaut) ;
  • 'meta_key' et 'meta_value' sont à utiliser conjointement pour spécifier un champ personnalisé spécifié dans les articles ;
  • 'post_type' : les valeurs peuvent être 'post' (par défaut), 'page' ou 'attachment'.

Voici comment utiliser cette fonction « get_posts » dans notre cas. Éditer le fichier « single.php » du thème WordPress et insérer le code suivant :

<?php
$linkedCatId = get_post_meta(get_the_ID(), 'ID-De-Categorie', true);
if (!empty($linkedCatId)) : ?>
<div class="art-intro-box">
  <?php
  $cpnetPosts = get_posts(array('category' => $linkedCatId, 'numberposts' => 4));
  if (!empty($cpnetPosts)) : ?>
  <ul>
  <?php foreach ($cpnetPosts as $cpnetPost) :
    $cpnetPostTitle = $cpnetPost->post_title;
    $cpnetPostLink = get_permalink($cpnetPost->ID);
    $cpnetPostDate = mysql2date(get_option('date_format', 'j F Y'), $cpnetPost->post_date);
  ?>
    <li>
      <div class="post-date"><?php echo esc_html($cpnetPostDate); ?></div>
      <div class="post-title">
        <a class="art-link" href="<?php echo $cpnetPostLink; ?>">
          <?php echo esc_html($cpnetPostTitle); ?>
        </a>
      </div>
    </li>
  <?php endforeach; ?>
  </ul>
  <div class="cat-link">
    <a href="<?php echo esc_attr(get_category_link($linkedCatId)); ?>">
      Voir tous les articles de&nbsp;: <?php echo get_cat_name($linkedCatId); ?>
    </a>
  </div>
  <?php endif; ?>
</div>
<?php endif; ?>

Une liste d’articles accompagne désormais les articles reliés à une catégorie.

Laisser un commentaire

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

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Mesure anti-spam. Merci de copier le code « B2lcQC » dans le champ ci-dessous :