get_posts()

Définition : get_posts() récupère un ensemble de publications WordPress à partir de paramètres de recherche. Elle convient aux listes simples, mais ne remplace pas toutes les fonctionnalités de pagination et de requête de WP_Query.

Comprendre et utiliser

À quoi sert ce terme ?

Elle fournit rapidement des objets ou des identifiants sans manipuler directement les tables. C’est utile pour alimenter une sélection limitée de ressources ou constituer les données d’un petit widget éditorial.

Fonctionnement technique

La fonction repose sur WP_Query, avec ses propres valeurs par défaut, notamment un nombre limité de résultats et suppress_filters activé par défaut. Les paramètres doivent correspondre au contenu recherché.

Dans quels contextes l’utiliser ?

L’utiliser pour un nombre borné de publications avec des critères clairs. Pour une pagination complète, une requête secondaire WP_Query peut être plus adaptée.

Cas concret : ATOOLPHA

ATOOLPHA affiche trois articles publiés les plus récents, sans modifier la requête principale de la page.

Exemple de code commenté

Extrait PHP destiné à un plugin ou à un template WordPress, dans le contexte indiqué ; pas au contenu HTML de l’article.

<?php
$items = get_posts( array(
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'numberposts'    => 3,
    'orderby'        => 'date',
    'order'          => 'DESC',
) );
foreach ( $items as $item ) {
    echo '<p>' . esc_html( get_the_title( $item ) ) . '</p>';
}

Décryptage de l’exemple

La requête demande explicitement trois articles publiés. Chaque titre est affiché avec esc_html() ; la boucle parcourt des objets sans appeler setup_postdata(), ce qui évite de modifier les données globales.

Résultat attendu

Une courte liste de trois titres apparaît lorsqu’au moins trois articles publiés existent ; sinon elle affiche les résultats disponibles.

Exercice pratique et vérification

Créer quatre articles tests datés différemment et vérifier l’ordre DESC. Mettre l’un en brouillon et confirmer sa disparition.

Précautions et limites

Sur un site volumineux, limiter le nombre de résultats et tenir compte du cache. Le comportement de suppress_filters peut surprendre les extensions de traduction ou de recherche.

À ne pas confondre

get_posts() fournit un tableau de résultats ; WP_Query expose un objet de requête et des informations de pagination plus riches.

Diagnostic avancé

Si des filtres attendus ne s’appliquent pas, examiner suppress_filters et les paramètres. Si la liste est vide, vérifier les statuts et les types.

Choix d’architecture et déploiement

Un petit widget et une archive paginée n’ont pas les mêmes besoins. get_posts() privilégie la simplicité pour une sélection bornée ; lorsque le visiteur doit parcourir des centaines de résultats, documenter la pagination, les totaux, le cache et les paramètres de la requête.

Contrôle avant intégration

Contrôler le nombre maximal, les statuts, les traductions éventuelles et l’absence de réinitialisation de globals inutile.

Notions associées

  • WP_Query
  • Secondary Query
  • get_the_title()

Références officielles

Bouton retour en haut de la page