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 :
get_post_custom($post->ID);
– Soit je récupérais les champs nécessaires un par un de la manière suivante :
$champ1 = get_post_meta($post->ID,'champ1',true);
$champ2 = get_post_meta($post->ID,'champ2',true);
Aujourd’hui, j’ai découvert une autre façon de faire, plus satisfaisante et certainement plus économe en requêtes SQL.
$posts = get_posts(array(
'fields' => 'all_with_meta',
'meta_query' => array(
array('meta_key'=>'champ1'),
array('meta_key'=>'champ2')
)
);
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 :
foreach($posts as $post){
echo $post->champ1;
}
Simple comme bonjour ! Pour information, l’astuce fonctionne aussi avec les utilisateurs : les mêmes paramètres sur la fonction get_users().
Article très pertinent comme tous les autres d’ailleurs, je vous en remercie.
Je ne savais pas ça et utilisais toujours get_post_meta. Excellente astuce, merci !
Bravo pour l’article 😉
Moi qui utilisais toujours get_post_meta y’a de quoi améliorer pas mal de code ! 😀