wake-up-neo.com

Moderne Stammes-Kalender-WP-Abfrage mit Meta-Abfrage funktioniert überhaupt nicht

Ich habe seit ein paar Tagen versucht, meinen WordPress-Veranstaltungskalender von einem modernen Stamm so zu gestalten, wie ich es brauche.

Ich habe hunderte von Bestell- und Lieferterminen in der DB, die jeweils um ca. 5-10 Wochen voneinander getrennt sind. Was ich versuche zu erreichen, ist eine Liste, in der ich alle Ereignisse sehen kann, die am heutigen oder gestrigen Datum beginnen.

Das hört sich einfach an, aber das Problem scheint zu sein, wenn Sie Ereignisse zwischen zwei Daten abfragen, werden sowohl das Start- als auch das Enddatum abgefragt, wodurch Sie historische Ereignisse erhalten, die nicht gesehen werden müssen und verwirrend sein können.

Ich glaube, der Weg, dies zu überwinden, ist mit einer wp_query und einer meta_query, aber egal auf welche Weise ich versuche, die Meta-Abfrage hinzuzufügen, um sie nach dem Startdatum zu sortieren, bricht nur das Ganze.

dies ist die Frage unter jeder Hilfe wäre super, da ich nur noch wenig Haare zum Ausziehen habe!

 <?php
  $query = new WP_Query( array( 'post_type' => 'tribe_events',
    'meta_query' => array(
        array(
            'key' => '_EventStartDate',
            'value' => date('Y-m-d H:i:s', strtotime('-1 week')),
            'compare' => 'date'
        )
    )
  ) );
  if ($query->have_posts())
  {
    while ($query->have_posts()) : $query->the_post();
        echo $query->post->EventStartDate . ' ';
        echo $query->post->post_title . '</br>';

    endwhile;
  }
  wp_reset_query();
  ?>

Ich habe auch versucht, den Meta-Wert auf zu ändern

  'value' => date('Y-m-d', strtotime('-1 week')),

aber das hat auch nicht geklappt ...

Vielen Dank

1
blackhill24

Was ich tun würde, ist eine Abfrage für das _EventStartDate mit einem benutzerdefinierten "eventDisplay" zu erstellen. Dadurch werden alle Ereignisse erfasst, die nach dem Startdatum sortiert sind. Dann, sobald Sie in die Schleife geraten; Vergleichen Sie das Startdatum mit einem bestimmten Datum, das Sie ausgeben möchten. tribe_get_start_date () akzeptiert einen Datumsformatparameter ( siehe hier ), mit dem Sie das Format zurückgeben können, mit dem Sie vergleichen möchten. Hinweis: Dieser Code ist nicht getestet, sollte Sie jedoch auf den richtigen Weg bringen.

$args = array(
    'post_status'=>'publish',
    'post_type'=> 'tribe_events',
    'posts_per_page'=> 10,
    'meta_key'=> '_EventStartDate',
    'orderby'=> '_EventStartDate',
    'order'=> 'DESC',
    'eventDisplay'=> 'custom',
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) : $query->the_post();
        if(tribe_get_start_date() != [INSERT DATE TO COMPARE WITH]) {
            echo tribe_get_start_date() . ' ';
            the_title() . '</br>';
        }
    endwhile;
}

wp_reset_postdata();
1
ZachTRice