2012-07-18 19 views
5

estoy usando el Calendario Todo en un evento encontrado aquí: http://wordpress.org/extend/plugins/all-in-one-event-calendar/
Estoy tratando de mostrar los próximos eventos únicos (por lo que no hay eventos pasados) usando la función WP_Query(). Veo que hay una tabla "wp_ai1ec_events" en la base de datos y una columna llamada "start" con las horas de inicio en formato aaa-mm-dd hh: mm: ss. Puedo obtener la hora actual en el mismo formato utilizando $ horaActual = tiempo_actual ('mysql')Calendario Wordpress Todo en Uno Evento: Mostrar Próximos Eventos Sólo

Esto es lo que mi consulta se parece hasta ahora:

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

He intentado añadir '& start> '. $ currentTime hasta el final de la declaración $ frontpageevents, pero eso no funcionó. Esperaba que alguien supiera cómo manejar esto.

Respuesta

5

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

estoy en busca de algo similar. ¡Encontré la publicación anterior que debería ayudar!

"Los eventos son mensajes, pero la fecha de inicio/finalización del evento! = Fecha posterior. Cuando realiza una consulta, debe realizar una consulta de evento, no una consulta posterior, es decir, debe usar la API del complemento para recuperar eventos ordenado por fechas de inicio o finalización. La función de interés es get_events_between(). Está ubicada en la clase Ai1ec_Calendar_Helper. La clase se encuentra en: app/helper/class-ai1ec-calendar-helper.php Modifiqué un poco tu código. no lo he probado, así que puede haber errores tipográficos u otros errores, pero la lógica es la misma: http://pastebin.com/SNp4TJij "

¡Actualización!

Así que realmente entendí esto ahora ... Aquí está el código que configuré para obtener eventos entre hoy y un año a partir de hoy.


    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(); 

También puede utilizar el get_events_relative_to función() con argumentos para la hora de inicio, un límite para el número de resultados, que se compensan página (que se utiliza en sus puntos de vista para ai1ec no es igual que la paginación WP), y filtros ... devuelve una matriz multidimensional de objetos de evento. Tuve que crear $ events = $ get_events ['events'] y usar $ events en mi foreach para recuperar correctamente los post_id.

Miré a través de ai1ec-themes para encontrar ejemplos de cómo mostrar datos de eventos.
echo apply_filters('the_content', $event->post->post_content);
Devuelve información de evento formateada HTML como lo que se muestra en una página de evento único.

+0

Intenté usar ese código. Los eventos se muestran en el marco de tiempo correcto, pero se muestran en el orden de tiempo de inicio incorrecto (pero para la fecha de publicación) – Rosencruez

1

La matriz $ post_ids ya está en orden por fecha de inicio. En su variable $ args agregue 'orderby' => 'post__in'

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