J’ai beau développer pour WordPress de façon poussée depuis 2009, j’en apprends encore tous les jours. Par exemple, jusqu’ici, pour récupérer une liste d’articles avec leurs champs complémentaires, j’avais le choix entre deux possibilités :

– Soit je récupérais tous les champs complémentaires en appelant la fonction suivante :

[pastacode provider= »manual » lang= »php »]

get_post_custom($post->ID);

[/pastacode]

– Soit je récupérais les champs nécessaires un par un de la manière suivante :
[pastacode provider= »manual » lang= »php »]

$champ1 = get_post_meta($post->ID,'champ1',true);
$champ2 = get_post_meta($post->ID,'champ2',true);

[/pastacode]
Aujourd’hui, j’ai découvert une autre façon de faire, plus satisfaisante et certainement plus économe en requêtes SQL.
[pastacode provider= »manual » lang= »php »]

$posts = get_posts(array(
    'fields'    => 'all_with_meta', 
    'meta_query'    => array(
        array('meta_key'    =>    'champ1'),
        array('meta_key'    =>    'champ2')
    )
);

[/pastacode]
Le paramètre ‘meta_query‘ sert habituellement à filtrer les résultats renvoyés par la fonction get_posts(). Mais grâce au paramètre ‘fields‘, vous en profitez pour tout faire remonter dans l’objet de retour. Exemple :
[pastacode provider= »manual » lang= »php »]

foreach($posts as $post){
    echo $post->champ1;
}

[/pastacode]
Simple comme bonjour ! Pour information, l’astuce fonctionne aussi avec les utilisateurs : les mêmes paramètres sur la fonction get_users().

3 thoughts on “WordPress : récupérer simplement des articles et leurs champs complémentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.