2016-12-10 11 views
0

Ich benutze Event Espresso mit WordPress. Können Sie mir bei der weiteren Modifizierung von Abfragen helfen? Ich hoffe, Sie werden :)Event Espresso Abfrage Änderung?

Ich möchte Meta-Abfrage verwenden, um Ereignisse auf Seite aufzulisten. Etwas wie unter dem Code.

$atts = array(
    'title' => NULL, 
    'limit' => 10, 
    'css_class' => NULL, 
    'show_expired' => FALSE, 
    'month' => NULL, 
    'category_slug' => NULL, 
    'order_by' => 'start_date', 
    //'order_by' => 'end_date', 
    'sort' => 'DESC', 
    'meta_query' => array(
     array(
      'key' => 'start_date',  
      'value' => '2017-01-08 08:00:00',    
      'type' => 'DATETIME', 
      'compare' => '>=', 
     ), 
     ) 
); 

Ich möchte für Event-Espresso-Suchfunktion implementieren, und ich habe diese Felder: Staat - Dropdown (? Wie alle Zustand aufzulisten Mai Veranstaltungsort sein) Kategorie - Dropdown Startdatum - Datepicker End Date - Datepicker Schlüsselwort - Eingabe

Am submit werden diese Werte übergeben und basierend auf diesen, werde ich gefilterte Ereignisse erhalten, die mit diesen Werten in Zusammenhang stehen.

Also, wie das zu implementieren? Bitte helfen. Vielen Dank im Voraus

+0

Niemand in Stackoverflow Welt? –

Antwort

0

eine leicht verzögerte Reaktion auf diese ...

Erstens hängt dies von der Version von EE Sie verwenden. Sie unterstützen sowohl EE3 als auch EE4. Ich verwende EE4, daher bezieht sich jeder Verweis auf Code, den ich mache, auf Version 4.

Um ein Ereignisarchiv mit einer Filterfunktionalität zu erstellen, müssen Sie das EE-Ereignisarchiv verwenden. EE verwendet benutzerdefinierte Datenbanktabellen und viele verschiedene Post-Typen, um das zu erreichen, was Sie sehen. Daher wird das Erstellen eines einfachen Archivs mit diesen Filtern nicht sehr gut funktionieren. Sehr wenig ist in den Tabellen _posts und _postmeta gespeichert, und Sie müssen Post-Meta von verwandten Post-Typen und -Tabellen erhalten, die nicht wie WP_Query-Likes angelegt sind. Sie haben einen Shortcode für die Ereignisliste, der laid out here ist, und hat viele der gesuchten Filter, aber keine Suchfunktion.

Ihr Support-Forum hat viele Schnipsel und solche von ihren Mitarbeitern erstellt und es gibt einen (langen) verwandten Beitrag über die Formatierung der Ereignisse Archivseite here. Sie müssen auch durch this documentation gehen, um über ihre benutzerdefinierten Methoden und Hooks zu sehen.

Sie können die Archivvorlagen, die sie in einem untergeordneten Thema beschreiben, kopieren und ändern, um oben auf der Seite Suchfunktionen hinzuzufügen. Dadurch können Sie das Archiv direkt überschreiben. Sie müssen einige ausgefallene Filter verwenden, die ziemlich klar abgedeckt sind over on WPMU Dev.

Die Stücke von Informationen, die Sie für zum Filtern suchen sind hier, minus Stichwort:

<?php 
 
\t if(have_posts()){ 
 
\t \t while (have_posts()){ the_post(); // enter the WordPress loop 
 
\t \t \t 
 
\t \t \t $id = get_the_ID(); // get the ID of the current post in the loop, post ID = EVT_ID 
 

 
\t \t \t $terms = get_the_terms($id, 'espresso_event_categories'); // get the event categories for the current post 
 
\t \t \t if ($terms && ! is_wp_error($terms)) { 
 
\t \t \t \t $cats = array(); 
 
\t \t \t \t foreach ($terms as $term) { 
 
\t \t \t \t \t // do something 
 
\t \t \t \t } 
 
\t \t \t } 
 

 
\t \t \t $event = EEM_Event::instance()->get_one_by_ID($id); // get the event OBJECT using EE's existing method 
 

 
\t \t \t $venue = $event->venue(); // get the venue object for the current event 
 
\t \t \t $state = $venue instanceof EE_Venue ? $venue->state_abbrev(); // get the event venue's state, but you can use state_name() to get the full name \t \t \t \t \t \t \t \t \t \t  
 

 
\t \t \t // using the event to get the first and last date for the entire event. Sub $datetime for $event to do it per datetime 
 
\t \t \t $start_date = $event->start_date('j M Y'); 
 
\t \t \t $end_date = $event->end_date('j M Y'); 
 
\t \t \t $start_time = $event->start_time(get_option('time_format')); 
 
\t \t \t $end_time = $event->end_time(get_option('time_format')); 
 
\t \t \t ?> 
 

 
\t \t \t <!-- Do some awesome layout stuff here --> 
 

 
\t \t \t <?php 
 
\t \t } 
 
\t } 
 
\t espresso_pagination(); 
 
?>

Dies wird Ihnen für jede Stelle in der Schleife als Variablen die Meta geben, aber Vielleicht möchten Sie sie in pre_get_posts ziehen. Sie können ebenso einfach ein Array von $ -Ereignissen erstellen und dann mit den Variablen filtern.

Ich bin nicht sicher, was Ihre genauen Anforderungen in Bezug auf Keyword sind. Meinst du Tags? Titel Schlüsselwörter? Beschreibung suchen? Sie müssen genau eingrenzen, was Sie tun müssen, um eine Funktion dafür zu schreiben.