我有一些名为“日期”和“开始时间”的自定义字段,并希望按我的自定义字段“日期”和“开始时间”对帖子进行排序。我有以下查询 - 如果有人能指出我哪里出错了,那就太好了。
我的查询如下:
编辑:第二个数组可以更改为任何值 - 其自身的字段返回 0000 到 2359 之间的任何值 - 这是我需要在日期之后排序的值
所以我现在有我的查询返回这个
5 月 26 日星期日 - 开始时间:0900 5 月 26 日星期日 - 开始时间:1300 5 月 26 日星期日 - 开始时间:2000 5 月 26 日星期日 - 开始时间:1030
但我想要这样:
5 月 26 日星期日 - 开始时间:0900 5 月 26 日星期日 - 开始时间:1030 5 月 26 日星期日 - 开始时间:1300 5 月 26 日星期日 - 开始时间:2000
$today = date("Ymd");
$args = array(
'post_type' => 'event',
'meta_query' => array(
array(
'key' => 'date',
'value' => $today,
'type' => 'numeric',
'compare' => '>'
),
array(
'key' => 'start_time',
'value' => array( 0, 2359 ),
'compare' => 'BETWEEN'
)
),
'orderby' => 'meta_value',
'meta_key' => 'date',
'order' => 'ASC',
'paged'=> $paged,
'posts_per_page'=> 12
);
更新
我可以使用 sql 查询让它工作:
<?php
$querystr = "
SELECT wposts.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta, $wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta.meta_key = 'date'
AND wpostmeta2.meta_key = 'start_time'
AND wposts.post_type = 'event'
AND wposts.post_status = 'publish'
ORDER BY wpostmeta.meta_value ASC, wpostmeta2.meta_value ASC
";$pageposts = $wpdb->get_results($querystr, OBJECT);
?>
<?php if ($pageposts): ?>
<?php global $post; ?>
<?php foreach ($pageposts as $post): ?>
<?php setup_postdata($post); ?>
// STUFF
<?php endforeach; ?>
<?php endif; ?>
但是,我不能让它只返回日期大于今天的帖子。
更新 2:
返回日期大于今天的帖子很简单:
<?php
$today = date("Ymd");
$eventdate = get_field('date');
?>
<?php if($eventdate > $today) : ?>