WordPress All-In-One-Veranstaltungskalender: Nur anstehende Veranstaltungen anzeigen

Lesezeit: 3 Minuten

Benutzer-Avatar
Rosencruez

Ich verwende den hier zu findenden All-In-One-Veranstaltungskalender: http://wordpress.org/extend/plugins/all-in-one-event-calendar/

Ich versuche, mit der Funktion WP_Query() nur kommende Ereignisse anzuzeigen (also keine vergangenen Ereignisse). Ich sehe, es gibt eine “wp_ai1ec_events” Tabelle in der Datenbank und eine Spalte mit dem Namen “Anfang” mit den Startzeiten im Format jjjj-mm-tt hh:mm:ss. Ich kann die aktuelle Uhrzeit im gleichen Format mit abrufen $aktuelleZeit = aktuelle_Zeit(‘mysql’)

So sieht meine Abfrage bisher aus:

    $frontpageevents="post_type=ai1ec_event&showposts=3&orderby=start&order=ASC&meta_value=yes";
$eventquery = new WP_Query($frontpageevents);

Ich habe versucht, ‘&start>’.$currentTime am Ende der $frontpageevents-Deklaration hinzuzufügen, aber das hat nicht funktioniert. Ich hatte gehofft, ob jemand weiß, wie man damit umgeht.

Benutzer-Avatar
juliaallyce

http://wordpress.org/support/topic/plugin-all-in-one-event-calendar-order-event-by-start-date?replies=3#post-2443756

Ich suche etwas ähnliches. Ich habe den obigen Beitrag gefunden, der helfen sollte!

„Ereignisse sind Posts, aber Start-/Enddatum des Ereignisses != Post-Datum. Wenn Sie eine Abfrage durchführen, müssen Sie eine Ereignisabfrage durchführen, keine Post-Abfrage. Mit anderen Worten, Sie müssen die API des Plugins verwenden, um Ereignisse nach Start oder sortiert abzurufen Enddaten. Die interessierende Funktion ist get_events_between(). Sie befindet sich in der Klasse Ai1ec_Calendar_Helper. Die Klasse befindet sich in: app/helper/class-ai1ec-calendar-helper.php Ich habe Ihren Code ein wenig modifiziert. Ich habe es nicht getestet Es kann also Tippfehler oder andere Fehler geben, aber die Logik ist dieselbe: http://pastebin.com/SNp4TJij

Aktualisieren!

Also, ich habe das jetzt wirklich herausgefunden … Hier ist der Code, den ich eingerichtet habe, um Ereignisse zwischen heute und einem Jahr ab heute zu erhalten.


    global $ai1ec_calendar_helper, $ai1ec_events_helper;

    // gets localized time
    $bits = $ai1ec_events_helper->gmgetdate( $ai1ec_events_helper->gmt_to_local( time() ) );

    //sets start time to today
    $start = gmmktime(0,0,0,$bits['mon'],$bits['mday'],$bits['year']);

    //sets end time to a year from today i.e. $bits['year']+1
    $end = gmmktime(0,0,0,$bits['mon'],$bits['mday'],$bits['year']+1);

    //Look in class-ai1ec-calendar-helper.php for details
    $get_events = $ai1ec_calendar_helper->get_events_between($start,$end);

    //loop through results to get post_ids
    foreach($get_events as $event ):
        $post_ids[] = $event->post_id;
    endforeach;

    // The New Events Query
    $args = array(
        'posts_per_page'  => 4,
        'paged' => get_query_var('paged'),
        'post_type'=> 'ai1ec_event',
        'post__in' => $post_ids
    );

    $events_added = new WP_Query( $args );

    // The Loop
    while ( $events_added->have_posts() ) : $events_added->the_post();
        $event = Ai1ec_Events_Helper::get_event($post->ID);
        //Your code here
    endwhile;
    wp_reset_postdata();

Sie können auch die Funktion get_events_relative_to() mit Argumenten für die Startzeit, ein Limit für die Anzahl der Ergebnisse, den Seitenversatz (der in ihren Ansichten für ai1ec verwendet wird, nicht dasselbe wie die wp-Paginierung) und Filter verwenden … sie wird zurückgegeben ein mehrdimensionales Array von Ereignisobjekten. Ich musste $events = $get_events erstellen[‘events’] und verwenden Sie $events in meinem foreach, um die post_ids richtig abzurufen.

Ich habe die ai1ec-Themen durchgesehen, um Beispiele zu finden, wie Ereignisdaten angezeigt werden können.
echo apply_filters( 'the_content', $event->post->post_content );

Gibt Ereignisinformationen im HTML-Format zurück, wie sie auf einer einzelnen Ereignisseite angezeigt werden.

  • Ich habe versucht, diesen Code zu verwenden. Die Ereignisse werden im richtigen Zeitrahmen angezeigt, aber in der falschen Reihenfolge der Startzeit (aber in der Reihenfolge des Veröffentlichungsdatums).

    – Rosenkreuz

    7. September 2012 um 22:53 Uhr

Das $post_ids-Array ist bereits nach Startdatum geordnet. Fügen Sie in Ihrer $args-Variablen ‘orderby’ => ‘post__in’ hinzu

 $args = array(
        'posts_per_page'  => 4,
        'paged' => get_query_var('paged'),
        'post_type'=> 'ai1ec_event',
        'post__in' => $post_ids,
        'orderby' => 'post__in'
    );

1354250cookie-checkWordPress All-In-One-Veranstaltungskalender: Nur anstehende Veranstaltungen anzeigen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy