现代部落日历wp-元查询根本不起作用

时间:2016-12-20 作者:blackhill24

我已经找了好几天了,现在我想让我的WordPress活动日历按我需要的方式运行。

我有数百个DB订单和交货日期,每个订单和交货日期间隔约5-10周。我想做的是列出从今天或昨天开始的所有活动。

这听起来很简单,但问题似乎是,当您查询两个日期之间的事件时,它将同时查询开始日期和结束日期,从而提供不需要查看且可能会混淆的历史事件。

我相信克服这一问题的方法是使用wp\\u查询和meta\\u查询,但无论我尝试以何种方式添加meta查询以按开始日期排序,它都会破坏整个过程。

这是下面的问题,任何帮助都会很可怕,因为我已经没有头发要拔了!

 <?php
  $query = new WP_Query( array( \'post_type\' => \'tribe_events\',
    \'meta_query\' => array(
        array(
            \'key\' => \'_EventStartDate\',
            \'value\' => date(\'Y-m-d H:i:s\', strtotime(\'-1 week\')),
            \'compare\' => \'date\'
        )
    )
  ) );
  if ($query->have_posts())
  {
    while ($query->have_posts()) : $query->the_post();
        echo $query->post->EventStartDate . \' \';
        echo $query->post->post_title . \'</br>\';

    endwhile;
  }
  wp_reset_query();
  ?>
我还尝试将元值更改为

  \'value\' => date(\'Y-m-d\', strtotime(\'-1 week\')),
但这也没用。。。

谢谢

2 个回复
最合适的回答,由SO网友:ZachTRice 整理而成

我要做的是使用自定义的“eventDisplay”为\\u EventStartDate创建一个查询。这将获取按开始日期排序的所有事件。然后,一旦你进入循环;将开始日期与要输出的特定日期进行比较。tribe\\u get\\u start\\u date()接受日期格式参数(see here) 这将允许您返回要比较的格式。注意,此代码未经测试,但应该会让您走上正确的轨道。

$args = array(
    \'post_status\'=>\'publish\',
    \'post_type\'=> \'tribe_events\',
    \'posts_per_page\'=> 10,
    \'meta_key\'=> \'_EventStartDate\',
    \'orderby\'=> \'_EventStartDate\',
    \'order\'=> \'DESC\',
    \'eventDisplay\'=> \'custom\',
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) : $query->the_post();
        if(tribe_get_start_date() != [INSERT DATE TO COMPARE WITH]) {
            echo tribe_get_start_date() . \' \';
            the_title() . \'</br>\';
        }
    endwhile;
}

wp_reset_postdata();

SO网友:Tessa

我成功地做到了这一点:

$query = new WP_Query( array(
    \'post_type\' => \'tribe_events\',//Display only event post types
    \'eventDisplay\' => \'custom\',//Needed to override tribe\'s modifications to the WP_Query
    \'order\' => \'ASC\',//Order events by the ones closest to today first
    \'orderby\' => \'_EventStartDate\',//Order events using their start date
    \'meta_query\' => array( array(
        \'key\' => \'_EventStartDate\',//Compare using the event\'s start date
        \'value\' => date(\'Y-m-d H:i:s\'),//Compare against today\'s date
        \'compare\' => \'>=\',//Get events that are set to the value\'s date or in the future
        \'type\' => \'DATE\'//This is a date query
    ) )
) );
如果您使用的是pre\\u get\\u posts挂钩,那么我也会将“post\\u in”值设置为空数组,因为我认为tribe已经做了一些修改,用post ID填充了该列表。