Filtern benutzerdefinierter Beitragsart durch Vergleichen des Datums und zweier Meta-Schlüssel

Ich werde hier wahrscheinlich nur etwas übersehen, aber einige Hinweise würden sehr geschätzt werden.

Ich versuche mit WordPress und dem Advanced Custom Fields Plugin eine Event-Website zu erstellen.

Jetzt haben die Ereignisse zwei Optionen, sie sind entweder Eintägige Ereignisse oder Mehrere Tage Ereignisse.

Ich habe ihnen Felder gegeben, in die der Benutzer das Datum mit dem Datumswähler einsetzen kann.

Eintägiges Ereignis – one_day_event_date Mehrtägiges Ereignis – event_start_date, event_end_date

(diese Ausgabe YYYYMMDD Format: ie: 20140117)

Mein Problem kommt, wenn ich die Ergebnisse in der Schleife filtern möchte.

Im Idealfall möchte ich die Ereignisse in der Datumsreihenfolge mit den Feldern “one_day_event_date” und “event_start_date” anzeigen.

Aber ich möchte, dass ältere Ereignisse basierend auf den Werten one_day_event_date und event_end_date gefiltert werden

Dies ist der Code, den ich bisher versucht habe:

 'event', 'meta_query' => array( array( 'key' => 'event_end_date', 'value' => $currentdate, 'compare' => '>', 'type' => 'DATE' ), array( 'key' => 'one_day_event_date', 'value' => $currentdate, 'compare' => '>', 'type' => 'DATE' ) ), 'orderby' => 'meta_value_num', 'order' => 'ASC' ); $query = new WP_Query( $args ); ?> 

Solutions Collecting From Web of "Filtern benutzerdefinierter Beitragsart durch Vergleichen des Datums und zweier Meta-Schlüssel"

Ist das Problem, dass Ihr Filter funktioniert, aber die Sortierung funktioniert nicht? Wenn dem so ist, glaube ich, dass Sie angeben müssen, nach welchem meta_key Sie sortieren meta_key . Zum Beispiel müssen Sie entweder event_end_date oder one_day_event_date als Wert für meta_key im Top-Level-Array hinzufügen.

Versuche dies…

 < ?php $currentdate = date("Ymd",mktime(0,0,0,date("m"),date("d")-1,date("Y"))); $args = array( 'post_type' => 'event', 'meta_key' => 'event_end_date', // this is where you specify which meta field to sort on 'meta_query' => array( array( 'key' => 'event_end_date', 'value' => $currentdate, 'compare' => '>', 'type' => 'DATE' ), array( 'key' => 'one_day_event_date', 'value' => $currentdate, 'compare' => '>', 'type' => 'DATE' ) ), 'orderby' => 'meta_value_num', 'order' => 'ASC' ); $query = new WP_Query( $args ); ?> 

Wenn Sie sie zum Beispiel nach einem Startdatum sortieren müssen, würde ich ihnen beide ein Datum namens start_date und danach sortieren … Dann hätten die eintägigen Events einfach kein end_date (oder vielleicht auch das Enddatum) sei einfach das selbe wie das Startdatum).