【问题标题】:Wordpress All-In-One Event Calendar: Show Upcoming Events OnlyWordpress 多合一事件日历:仅显示即将发生的事件
【发布时间】:2012-07-18 16:07:35
【问题描述】:

我正在使用此处的多合一活动日历: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);

我尝试将 '&start>'.$currentTime 添加到 $frontpageevents 声明的末尾,但没有奏效。我希望有人知道如何处理这个问题。

【问题讨论】:

    标签: wordpress plugins all-in-one-event-calendar


    【解决方案1】:

    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"

    更新!

    所以我现在真的明白了...这是我设置的代码,用于获取今天和一年后的事件。

    
        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() 与 args 开始时间、结果数量限制、页面偏移量(在他们的视图中用于 ai1ec 与 wp 分页不同)和过滤器.. .it 返回事件对象的多维数组。我必须创建 $events = $get_events['events'] 并在我的 foreach 中使用 $events 来正确检索 post_ids。

    我浏览了 ai1ec-themes 以查找如何显示事件数据的示例。
    echo apply_filters( 'the_content', $event->post->post_content );
    返回 HTML 格式的事件信息,如单个事件页面中显示的内容。

    【讨论】:

    • 我尝试使用该代码。事件显示在正确的时间范围内,但显示在错误的开始时间顺序(但按发布日期顺序)
    【解决方案2】:

    $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'
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多