我正在努力寻找一个有效的解决方案wp_query.我目前有一些分配给帖子的自定义设置,一个是帖子是否为"精选",第二个是帖子结束的日期和时间(不再显示在结果中).我有查询使用该功能,但只需要将此结束日期加入其中,这是查询工作查找与'特色':
WP_Query('meta_key=skyali_feature&showposts=4&orderby=post_date');
Run Code Online (Sandbox Code Playgroud)
结束日期在wp_postmeta表中设置meta_key为'the_date',meta_values看起来像'05/16/2013 05:24'.我想编辑上面的查询,如果'the_date'已经设置,那么仅当'the_date'大于今天的日期和时间时才包含帖子.
这是我失败的尝试:
WP_Query(
'meta_key=skyali_feature&meta_key=the_date&meta_compare=>=&meta_value='
.date('d/m/Y H:i')
.'&showposts=4&orderby=post_date&orderby=the_date'
);
Run Code Online (Sandbox Code Playgroud)
Jar*_*obb 15
我最近必须做一些非常相似的事情,最后需要使用该meta_query属性.你会想做这样的事情:
$today = date('Ymd');
$args = array(
'post_type' => 'post',
'posts_per_page' => '4',
'meta_key' => 'the_date',
'meta_query' => array(
array(
'key' => 'skyali_feature'
),
array(
'key' => 'the_date',
'value' => $today,
'compare' => '>='
)
),
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
$your_custom_query = new WP_Query($args);
Run Code Online (Sandbox Code Playgroud)
几点说明......
我只需要在我的例子中按日期过滤,但看起来你需要在你的日期/时间做.(您可以$today使用所需的格式调整变量的第一行).
用posts_per_page而不是showposts. showposts已弃用.
是,我已经通知meta_key两次(一次在阵列的顶层,一次是作为一个元素meta_query的数组.有一个已知的错误:如果你不包括这种方式并不能在你的结果通过密钥进行排序.我也争吵了一会儿!
希望这有帮助,玩得开心!
[编辑]忘了将skyali_feature密钥添加回数组.
对于使用带有日期数据类型的高级自定义字段插件的人,这就是大于或等于今天的日期所需的:
$today = date('Ymd');
$args = array(
'post_type' => 'post',
'meta_key' => 'end-date',
'meta_query' => array(
array(
'key' => 'end-date'
),
array(
'key' => 'end-date',
'value' => $today,
'compare' => '>='
)
),
'orderby' => 'meta_value',
'order' => 'ASC'
);
$your_custom_query = new WP_Query($args);
Run Code Online (Sandbox Code Playgroud)