Kommendes Ereignis: Wie sortiere ich die database nach dem benutzerdefinierten Datumsfeld, sondern ignoriere vergangene Daten?

Ich benutze ein Ereignisplugin und kämpfe, um meine databaseabfrage zu erhalten, um perfekt zu sein. Die Abfrage befindet sich in der Vorlage event-single.php. Was ich für die Abfrage benötige:

  • Fragen Sie den benutzerdefinierten Nachrichtentyp “Ereignisse” nach bevorstehenden Ereignissen ab
  • Sortieren nach _event_start_date meta_key, um das früheste Datum (nächstes Ereignis) anzuzeigen
  • PAST-Ereignisse werden nicht angezeigt
  • Wenn “aktuelles Ereignis”, nächstes Ereignis anzeigen

Hier sind meine aktuellen $ Argumente.

  array($donotrepeat), "post_type" => 'event', 'meta_key' => '_event_start_date', // name of custom field 'orderby' => 'meta_value_num', "order" => 'ASC', "posts_per_page" => 1 ); ?> 

Definiere $donotrepeat früher

 $donotrepeat = get_the_ID(); 

Bisher ist die Abfrage erfolgreich

  • Fragt den benutzerdefinierten Posttyp ab
  • Ignoriert das “aktuelle” Ereignis
  • Sortiert nach frühestem Datum.

Ich kann jedoch nicht herausfinden, wie man “vergangene” Daten ignoriert. Es gibt einen anderen “Schlüssel” Bereich, der von diesem Plugin erstellt wurde und Werte wie “Vergangenheit” und “Zukunft” enthält – das könnte also vielversprechend sein.

Ich habe versucht, meta_query zu verwenden, um das Problem mit dem vergangenen Datum zu sortieren, aber ich kann es einfach nicht funktionieren lassen. Ich denke, das ist wahrscheinlich der Weg, aber ich bin offen für andere Ideen. Ich bin sicher, das ist nicht so schwer … kann jemand helfen?

Solutions Collecting From Web of "Kommendes Ereignis: Wie sortiere ich die database nach dem benutzerdefinierten Datumsfeld, sondern ignoriere vergangene Daten?"

Sie sind ziemlich nah dran, aber ich würde nicht durch den Schlüssel “Geltungsbereich” abgelenkt werden. Das Folgende ist nicht getestet.

 < ?php $args = array( 'post__not_in' => array($donotrepeat), "post_type" => 'event', 'meta_key' => '_event_start_date', // name of custom field 'orderby' => 'meta_value', "order" => 'ASC', "posts_per_page" => 1, 'meta_query' => array( array( 'key' => '_event_start_date', 'value' => date('Ym-d'), 'compare' => '>=', 'type' => 'DATE' ) ), ); ?> 

Der meta_key ist nur zur Bestellung vorhanden – meta_query steuert die tatsächliche Auswahl.

Beachten Sie, dass ich Ihre posts_per_page so belassen habe, wie sie ist, obwohl sie die Auswahl auf einen Datensatz beschränkt.