我已经找了好几天了,现在我想让我的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\')),
但这也没用。。。
谢谢
最合适的回答,由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填充了该列表。