5

ここにあるオールインワン イベント カレンダーを使用しています : http://wordpress.org/extend/plugins/all-in-one-event-calendar/
イベント) WP_Query() 関数を使用します。データベースに「wp_ai1ec_events」テーブルがあり、「start」という名前の列があり、yyyy-mm-dd hh:mm:ss 形式で開始時刻が示されています。$currentTime = current_time('mysql')を使用して、同じ形式で現在の時刻を取得できます

これは私のクエリがこれまでにどのように見えるかです:

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

$frontpageevents 宣言の最後に '&start>'.$currentTime を追加しようとしましたが、うまくいきませんでした。誰かがこれを処理する方法を知っていればと思っていました。

4

2 に答える 2

5

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

似たようなものを探しています。役立つはずの上記の投稿を見つけました!

「イベントは投稿ですが、イベントの開始日/終了日 != 投稿日です。クエリを作成するときは、投稿クエリではなく、イベント クエリを実行する必要があります。つまり、プラグインの API を使用して、開始または終了順にイベントを取得する必要があります。終了日. 対象​​の関数は get_events_between(). これは Ai1ec_Calendar_Helper クラスにあります. クラスは次の場所にあります: app/helper/class-ai1ec-calendar-helper.php コードを少し変更しました. テストはしていませんそのため、タイプミスやその他のエラーがある可能性がありますが、ロジックは同じです: http://pastebin.com/SNp4TJij "

アップデート!

だから私は本当にこれを理解しました...今日と今日から1年の間にイベントを取得するために設定したコードは次のとおりです。


    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() を使用して、開始時間の引数、結果数の制限、ページ オフセット (ai1ec のビューで使用され、wp ページネーションとは異なります)、およびフィルターを使用することもできます...それは戻りますイベント オブジェクトの多次元配列。post_ids を適切に取得するには、$events = $get_events['events'] を作成し、foreach で $events を使用する必要がありました。

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

于 2012-07-24T14:55:13.420 に答える
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'
    );
于 2013-02-25T03:33:07.407 に答える