web-dev-qa-db-fra.com

Suppression des publications du wp_query renvoyé. Impossible d'utiliser un objet de type WP_Query en tant que tableau

Mon objectif final est d’effectuer 3 filtres de champ personnalisés sur un ensemble de filtres sur un WP_Query. La difficulté vient du fait que je dois utiliser les relations ET/OU entre les 3 filtres:

  • champ1 = A ET
  • field2 = null OR field2 = B

J'essaie de résoudre ce problème en effectuant le premier filtre de champ dans la requête WP_Query d'origine, car cela représentera l'essentiel du filtre. Ensuite, je souhaite rassembler une liste d'ID de publication qui correspondent à l'instruction (field2 = null OR field2 = B) (à l'aide d'un second WP_Query), puis effectuer une vérification du WP_Query d'origine par rapport à la liste de post_id's et enlever toutes les allumettes.

le code que je dois faire jusqu'à présent est:

foreach($query['posts'] as $thepost) {
        if(in_array($thepost['ID'], $new_query_results['posts'])){
            unset($thepost);
        }
}

Avec $ query étant le WP_Query principal et $ new_query_results étant le WP_Query qui renvoie simplement un tableau d'ID de publication

L'exécution de ce code me donne l'erreur:

Fatal error: Cannot use object of type WP_Query as array in functions.php on line 190

Line 190: foreach($query['posts'] as $thepost) {

Premièrement, y a-t-il un meilleur moyen d'atteindre mon objectif? Sinon, quelqu'un peut-il trouver un moyen de faire fonctionner cet extrait de code?

1
G-Force

WP_Query est un objet et non un tableau. Nécessaire pour utiliser $ query-> posts

Pour ceux que ça intéresse, j'ai trouvé un meilleur moyen de s'attaquer à ce problème. L'exécution de la seconde requête avec les instructions OR et la sortie dans un tableau d'identifiants de publication m'ont permis de filtrer la requête d'origine en fonction de cette liste.

1
G-Force