2012-07-18 20 views
5

オールインワンイベントカレンダーを使用しています:http://wordpress.org/extend/plugins/all-in-one-event-calendar/
私は次のイベントのみを表示しようとしていますWP_Query()関数データベース内に"wp_ai1ec_events"テーブルがあり、開始時刻がyyyy-mm-dd hh:mm:ss形式の"start"という列があります。私は "&を追加しようとしましたWordpressオールインワンイベントカレンダー:今後のイベントのみを表示

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

:私はこれが私のクエリは、これまでのように見えるものである$ CURRENTTIME = CURRENT_TIME(「mysqlの」)を使用して

を同じフォーマットで現在の時刻を取得することができます$ currentTimeを$ frontpageevents宣言の最後に追加しましたが、それはうまくいかなかったのです。誰かがこれをどう扱うかを知っていればと思っていました。

答えて

5

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

私は似たような探しています。私は助けるべき上記の記事を見つけました!

"イベントは投稿ですが、イベントの開始日/終了日!= post date。クエリを作成するときは、ポストクエリではなくイベントクエリを実行する必要があります。つまり、プラグインのAPIを使用してイベントを取得する必要がありますapp/helper/class-ai1ec-calendar-helper.phpあなたのコードを少し修正しました。私はあなたのコードを少し修正しました。テストしていないので、タイプミスやその他のエラーが発生する可能性がありますが、ロジックは同じです:http://pastebin.com/SNp4TJij "

アップデート!

だから私は今これを理解しています...今日は今日から今日までの出来事を得るために設定したコードです。


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

あなたはまた、開始時間のための引数を持つ関数のget_events_relative_toを()を使用することができ、結果の数の制限、(WPのページネーションと同じではありませんai1ecのために自分の意見に使用されている)ページオフセット、フィルター...イベントオブジェクトの多次元配列を返します。 $ events = $ get_events ['events']を作成し、foreach内で$イベントを使用してpost_idsを適切に取得する必要がありました。

イベントデータを表示する方法の例を見つけるために、ai1ecテーマを調べました。
echo apply_filters('the_content', $event->post->post_content);
単一のイベントページに表示されるHTML形式のイベント情報を返します。

+0

私はそのコードを使ってみました。イベントは正しい時間枠に表示されていますが、間違った開始時刻順に表示されています(ただし、post dateの順番に表示されます) – Rosencruez

1

$ post_ids配列は、開始日順に並べられています。あなたの$ args変数に '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' 
    ); 
関連する問題