2012-07-18 36 views
5

Tôi đang sử dụng Lịch sự kiện tất cả trong một tại đây: http://wordpress.org/extend/plugins/all-in-one-event-calendar/
Tôi đang cố gắng hiển thị các sự kiện sắp diễn ra (vì vậy không có sự kiện trước) hàm WP_Query(). Tôi thấy có bảng "wp_ai1ec_events" trong cơ sở dữ liệu và cột có tên "bắt đầu" với thời gian bắt đầu ở định dạng yyyy-mm-dd hh: mm: ss. Tôi có thể lấy thời gian hiện tại trong các định dạng tương tự sử dụng $ currentTime = CURRENT_TIME ('mysql')Wordpress All-In-One Lịch sự kiện: Chỉ hiển thị sự kiện sắp diễn ra

Đây là những gì truy vấn của tôi trông như thế cho đến nay:

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

Tôi đã thử thêm '& bắt đầu> '. $ currentTime vào cuối khai báo $ frontpageevents, nhưng điều đó không có tác dụng. Tôi đã hy vọng nếu ai đó biết cách xử lý việc này.

Trả lời

5

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

Tôi đang tìm kiếm nội dung tương tự. Tôi tìm thấy bài viết ở trên sẽ giúp bạn!

"Sự kiện là bài đăng nhưng ngày bắt đầu/kết thúc sự kiện! = Ngày đăng bài. Khi bạn thực hiện truy vấn, bạn phải thực hiện truy vấn sự kiện chứ không phải đăng truy vấn. Nói cách khác, bạn phải sử dụng API của plugin để truy xuất sự kiện được sắp xếp theo ngày bắt đầu hoặc ngày kết thúc Chức năng quan tâm là get_events_between() Nó nằm trong lớp Ai1ec_Calendar_Helper Lớp này nằm ở: app/helper/class-ai1ec-calendar-helper.php Tôi đã sửa đổi mã của bạn một chút. chưa thử nghiệm để có thể có lỗi chính tả hoặc các lỗi khác nhưng logic giống nhau: http://pastebin.com/SNp4TJij "

Cập nhật!

Vì vậy, tôi thực sự đã tìm ra điều này ngay bây giờ ... Đây là mã tôi thiết lập để nhận sự kiện giữa ngày hôm nay và một năm kể từ hôm nay.


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

Bạn cũng có thể sử dụng chức năng get_events_relative_to() với args cho thời gian bắt đầu, một giới hạn cho số lượng kết quả, trang offset (được sử dụng trong quan điểm của họ cho ai1ec không giống như wp pagination), và các bộ lọc ... nó trả về một mảng các đối tượng sự kiện đa chiều. Tôi đã phải tạo $ events = $ get_events ['events'] và sử dụng $ events trong foreach để truy xuất đúng post_ids.

Tôi đã xem qua các chủ đề ai1ec để tìm các ví dụ về cách hiển thị dữ liệu sự kiện.
echo apply_filters('the_content', $event->post->post_content);
Trả về thông tin sự kiện được định dạng HTML như thông tin được hiển thị trong một trang sự kiện.

+0

Tôi đã thử sử dụng mã đó. Các sự kiện được hiển thị trong khung thời gian chính xác nhưng được hiển thị theo thứ tự thời gian bắt đầu sai (nhưng để ngày đăng) – Rosencruez

1

Mảng $ post_ids đã được sắp xếp theo ngày bắt đầu. Trong biến $ args của bạn, hãy thêm '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' 
    ); 
Các vấn đề liên quan