web-dev-qa-db-de.com

Beiträge aus der zurückgegebenen wp_query entfernen. Objekt vom Typ WP_Query kann nicht als Array verwendet werden

Mein Endziel ist es, 3 benutzerdefinierte Feldfilter für eine Reihe von Filtern in einer WP_Query durchzuführen. Die Schwierigkeit entsteht, weil ich beide UND/ODER-Verknüpfungen zwischen den 3 Filtern verwenden muss:

  • field1 = A AND
  • field2 = null OR field2 = B

Ich versuche, dies zu lösen, indem ich den ersten Feldfilter in der ursprünglichen WP_Query durchführe, da dies den Großteil des Filters ausmacht. Dann möchte ich eine Liste von Post-IDs sammeln, die mit der Anweisung (field2 = null OR field2 = B) übereinstimmen (unter Verwendung einer zweiten WP_Query) und dann die ursprüngliche WP_Query mit der Liste von post_id's und vergleichen Streichhölzer entfernen.

der Code, den ich bisher machen muss, ist:

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

Mit $ query als Haupt-WP_Query und $ new_query_results als WP_Query, die einfach ein Array von Post-IDs zurückgibt

Das Ausführen dieses Codes gibt mir den Fehler:

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

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

Erstens, gibt es einen besseren Weg, um mein Ziel zu erreichen? Wenn nicht, kann jemand einen Weg finden, um dieses Code-Snippet zum Laufen zu bringen?

1
G-Force

WP_Query ist ein Objekt, kein Array. Wird benötigt, um $ query-> posts zu verwenden

Für alle Interessierten habe ich einen besseren Weg gefunden, um dieses Problem anzugehen. Durch Ausführen der zweiten Abfrage mit den Anweisungen OR und Ausgeben in ein Array von Post-IDs konnte ich die ursprüngliche Abfrage basierend auf dieser Liste filtern.

1
G-Force