Laufende Veranstaltungen und tribe_get_events()

Für die Verwaltung und Anzeige von Veranstaltungen verwende ich eigentlich immer das Plugin „The Events Calendar“. Sobald eine komplexer Übersichtsdarstellung (Monats- und Tagesübersichten) gefordert ist, ist das Plugin immer meine erste Wahl.

Mit der Version 4.9.0 gab es einige größere Änderungen im Code, die auch die von mir häufig verwendete Funktion „tribe_get_events“ betrafen.

Die Funktion „tribe_get_events“ ist eine Hilfsfunktion, die die bekannte WordPress-Funktion „get_posts“ erweitert, damit Veranstaltungen anhand des Start- und Enddatums aufgerufen werden können. Eine kurze Einführung zu der Funktion gibt es hier:

Mit dem folgenden kleinen Beispiel können die nächsten 5 Veranstaltungen abgerufen werden:

$events = tribe_get_events( [ 
   'posts_per_page' => 5, 
   'start_date'     => 'now',
] );

Es können auch Veranstaltungen innerhalb eines bestimmten Zeitraums abgerufen werden z.B. alle Veranstaltungen im Oktober 2019:

$events = tribe_get_events( [
   'eventDisplay' => 'custom',
   'start_date'   => '2019-10-01 00:01',
   'end_date'     => '2019-10-31 23:59',
] );

Hier gibt es allerdings einen kleinen Haken. Diese Abfrage zeigt nur Veranstaltungen an, die nach dem 1.10.2019 beginnen. Eine mehrtägige Veranstaltung, die zum Beispiel am 30.9.2019 beginnen würde und bis zum 2.10.2019 läuft, würde nicht in der Ausgabe erscheinen. Auch die oben erwähnte Anleitung hilft hier nicht weiter.

Nach einiger Wühlerei im Plugin-Code wird deutlich, dass es nicht nur die Argumente start_date und end_date gibt, sondern folgende Liste:

'start_date'
'starts_after'
'starts_before'
'end_date'
'ends_after'
'ends_before'

Die Argumente finden sich in der Datei /src/Tribe/Query.php Zeile 1285–1292.

Mit folgendem Snippet werden dann auch die mehrtägigen Veranstaltungen ausgegeben werden, die vor dem 1.10.2019 beginnen.

Es wäre wirklich praktisch gewesen, diese Informationen auch auf der Anleitungsseite zu finden. Aber wie dem auch sein, somit kann ich die Funktion des Plugins auch weiterhin wie gewünscht nutzen 🙂