Meta-Abfrage mit einer Unterabfragegruppe möglich?

Ich habe alle Foren und WP-Dokumente durchsucht, kann aber keine Antwort darauf finden, ob WP Meta Query eine Sub-Meta-Abfrage zulässt. Mein Problem ist das: Ich habe eine Reihe von Arten von Promos (benutzerdefinierte Post-Typ) mit Start- und Enddatum (als unixtime in der database gespeichert). Ich möchte eine Art von Promo (“Wände”, die gut funktioniert) ausschließen und auch (mit ODER für beide Fälle) Elemente ausschließen, deren Startdatum und Enddatum (falls vorhanden) in der Vergangenheit liegen. Hier ist mein Code:

$nowtime = time(); $the_query = new WP_Query( array( 'post_type' => 'promos', 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'wpcf-type-of-promo', 'value' => 'walls', 'compare' => 'NOT LIKE' ), array( 'relation' => 'AND', array( 'key' => 'wpcf-date-and-time-start', 'value' => $nowtime, 'compare' => ' 'NUMERIC' ), array( 'key' => 'wpcf-date-and-time-end', 'value' => $nowtime, 'compare' => ' 'NUMERIC' )) ) )); 

Für den obigen Code wird der Promo-Typ von “walls” korrekt ausgefiltert, aber die Start- und Enddaten in der Unterabfrage werden komplett ignoriert.

Solutions Collecting From Web of "Meta-Abfrage mit einer Unterabfragegruppe möglich?"

Ich glaube nicht, dass Sie den relation brauchen. Es ist standardmäßig AND .

  $nowtime = time(); $the_query = new WP_Query( array( 'post_type' => 'promos', 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'wpcf-type-of-promo', 'value' => 'walls', 'compare' => 'NOT LIKE' ), array( 'key' => 'wpcf-date-and-time-start', 'value' => $nowtime, 'compare' => '< ', 'type' => 'NUMERIC' ), array( 'key' => 'wpcf-date-and-time-end', 'value' => $nowtime, 'compare' => '< ', 'type' => 'NUMERIC' ) ) )); 

Ich habe einen Workaround, der so lautet:

Ich führe meine Abfrage oben aus und filtere nur den Typ und das END-Datum, wodurch die zurückgegebene Menge etwas reduziert wird.

DANN, in meiner Schleife füge ich eine PHP-Logik hinzu, die im Grunde sagt:

IF ((Enddatum ist nicht leer) UND (Enddatum ist kleiner als jetzt) ​​UND (Startdatum ist kleiner als jetzt)) Nichts tun. Ansonsten zeige den Beitrag.

Dies funktioniert zunächst, aber es wäre großartig, wenn es eine Abfrage geben würde, die genau das liefern würde, was ich von Anfang an möchte.