WordPress : WP_Query avec un tableau de « post__in » vide retourne des résultats !

La fonction WP_Query de wordpress qui permet de récupérer des posts en fonction d’une liste de critères contient une incohérence au niveau de l’argument « post__in ».
Cet argument permet de passer un tableau de posts (liste d’identifiants) afin de limiter la requête à ces posts. Pourtant si on lui passe un tableau vide, la recherche se fera sur tous les posts et on aura donc des résultats, alors qu’on s’attend à ne rien avoir.
Cela peut être gênant si notre tableau d’identifiants et généré dynamiquement et que l’on ne sait pas à l’avance si il va être vide.
Il faut donc penser à cette subtilité lors du développement afin de retrouver un comportement cohérent.
Une des solution est de toujours donner un identifiant inexistant (0) au tableau.

//!! va retourner des résultats !!
$listingIDs = array();
$args = array('post_type' => $type, 'post__in' => $listingIDs);
$my_query = new WP_Query($args);
//Ne retournera rien//
$listingIDs = array(0);
$args = array('post_type' => $type, 'post__in' => $listingIDs);
$my_query = new WP_Query($args);

Laisser un commentaire

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