在Wordpress中,我创建了一个名为“事件”的自定义帖子类型,并使用“高级自定义字段”将其添加到自定义字段中。我只有基本领域,因为我们对日历的需求本身就是基本的。
字段是:开始日期,结束日期,开始时间,结束时间,位置,标题
我正在尝试使用基本上是“如果结束日期大于今天的日期,然后显示帖子”的数组来查询帖子。
问题是“高级自定义字段”具有内置的DatePicker,其日期格式设置为YYYYMMDD,而不是PHP格式的YYYY-MM-DD。这是我今天的代码:
if (isset($_GET['_m'])) {
$current_month = $_GET['_m'];
$current_day = date('d'); // the actual day
$current_year = $_GET['_y'];
$future_year = 2016;
$startday = $current_year.$current_month.$current_day;
$endday = $future_year.$current_month.$current_day;
echo $startday;
echo $endday;
}
$args = array(
'post_type' => 'events',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_key' => 'event_date_ends',
'meta_query' => array(
'key' => 'event_date_ends',
'compare' => '>=',
'value' => $startday,
'type' => 'DATE'
),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);
我已经尝试了至少20种变体和技术,最终结果是A)返回所有已发布的“事件”或B)没有返回已发布的“事件”。
我出于各种原因而试图避免使用日历插件,这主要是因为大多数资源都很庞大,并且客户也希望特别设置返回值,而我却无法找到可自定义的日历插件。从外观上看,它已被批准,但过去的事件不会自动删除。
更新:
我能够将“高级自定义字段”日期转换为YYYY-MM-DD并使用了此代码,但是它返回了所有“事件”
$args = array(
'post_type' => 'events',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_query' => array(
'key' => 'event_date_ends',
'compare' => '>=',
'value' => date(Y-m-d),
'type' => 'DATE'
),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);
我发现了实际的问题,所以我以为会更新。
ACF文档说使用$ today = date('Ymd')来比较日期,但是您确实需要使用current_time('Ymd'),因此我删除了我添加并修复问题的functions.php代码,而不是解决该问题。
这是我的查询
$event1 = current_time('Ymd');
$args = array(
'post_type' => 'events',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_query' => array(
array(
'key' => 'event_date_ends',
'compare' => '>=',
'value' => $event1,
)
),
'meta_key' => 'event_date_ends',
'orderby' => 'meta_value',
'order' => 'ASC',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句