Comparons deux façons d’obtenir la liste des identifiants d’une collection d’articles issue d’une WP_Query. La première consiste à déclarer un tableau vide, boucler sur les résultats, et empiler chaque identifiant un par un. La seconde tient sur une seule ligne grâce à wp_list_pluck().
Cette fonction existe précisément pour ce genre de transformation, extrêmement fréquente dès qu’on manipule des résultats de requête : passer d’un tableau d’objets complets à un simple tableau d’une seule de leurs propriétés.
La méthode manuelle, et ses limites
$ids = array();
foreach ( $recents->posts as $post ) {
$ids[] = $post->ID;
}
Trois lignes pour une opération aussi simple, et le code se répète à chaque fois qu’une autre colonne doit être extraite ailleurs dans le projet. Rien de faux dans cette approche, mais elle ajoute du bruit visuel à des fonctions qui gagneraient à rester courtes.
Ce que fait wp_list_pluck()
wp_list_pluck( $list, $field, $index_key = null ) accepte un tableau d’objets ou de tableaux associatifs, un nom de champ à extraire, et optionnellement un second champ à utiliser comme clé du tableau résultat.

$recents = new WP_Query( array( 'posts_per_page' => 10 ) );
$ids = wp_list_pluck( $recents->posts, 'ID' );
// array( 12, 45, 78, ... )
$titres_par_id = wp_list_pluck( $recents->posts, 'post_title', 'ID' );
// array( 12 => 'Titre A', 45 => 'Titre B', ... )
Le second exemple est particulièrement utile pour construire rapidement un tableau d’association identifiant vers titre, prêt à alimenter un champ select dans un formulaire d’administration.
Fonctionne aussi avec des tableaux imbriqués
Contrairement à ce qu’on pourrait croire, wp_list_pluck() n’est pas limitée aux objets stdClass ou WP_Post : elle fonctionne également sur des tableaux associatifs, et sait même descendre d’un niveau si le champ demandé est lui-même un tableau.
- Sur un tableau d’objets
WP_Term, elle extrait par exemple les noms viawp_list_pluck( $termes, 'name' ). - Sur un tableau associatif de métadonnées, elle fonctionne identiquement avec la clé correspondante.
- Une clé absente sur certains éléments produit simplement une valeur
nullà cette position, sans erreur bloquante.
Un cousin utile : wp_list_filter
Dans la même famille de fonctions utilitaires, wp_list_filter() permet de filtrer un tableau d’objets selon des critères, avant d’y appliquer wp_list_pluck() pour n’en garder qu’une colonne. Les deux se combinent naturellement pour transformer un résultat de requête en quelques appels lisibles.
$publies = wp_list_filter( $recents->posts, array( 'post_status' => 'publish' ) );
$titres = wp_list_pluck( $publies, 'post_title' );
Attention à l’ordre des paramètres
Une confusion fréquente porte sur l’ordre des arguments : le champ à extraire vient en second, la clé d’indexation en troisième. Inverser les deux ne provoque pas d’erreur PHP visible, mais produit un résultat silencieusement incorrect, difficile à repérer sans relire la documentation ou le code source de la fonction sur le Trac de WordPress.
Un repère simple : le troisième argument répond à la question « comment indexer le résultat ? », jamais « que veut-on extraire en plus ? ». Un seul champ est extrait à la fois.
En résumé
Dès qu’un tableau de résultats de requête doit être réduit à une seule colonne, wp_list_pluck() évite une boucle explicite et gagne en lisibilité. Combinée à wp_list_filter(), elle couvre une grande partie des transformations habituelles sur des collections d’objets WordPress, sans dépendance externe ni fonction PHP générique à réinventer.