在wordpress中我需要做一个排序然后在where子句...但我不能让它工作

时间:2013-06-04 12:58:14

标签: mysql wordpress custom-fields

我有一个需要按时间顺序排列的帖子列表。这些字段都是自定义的,我使用的是高级自定义字段插件,但这无关紧要。

我要做的是先按日期对项目进行排序,然后在小于或等于今天日期的地方进行排序,然后将其限制为1。从高层次的角度来看,我试图从帖子列表中获取下一个事件(事件= 1个帖子)。

我环顾四周并试过几个例子,但似乎没有任何正确的顺序。日期以长文本格式存储在DB中,格式为20130609 yyyymmdd。

我的WP_Query:

$type = 'round';
$date = date('Ymd');
print $date;
$args=array(
  'post_type' => $type,
  'post_status' => 'publish',
  'posts_per_page' => 1,
  'meta_key' => 'race_date',
  'meta_compare' => '<=',
  'meta_value' => '20130603', //Test date
  'orderby_meta_key' => 'race_date',
  'orderby_order'    => 'ASC',
);

提前感谢,如果你知道答案,你会介意解释一下,因为我认为这个问题已经多次出现在其他问题上,但只适用于问题而不是一般情况。

:)

1 个答案:

答案 0 :(得分:1)

您的meta_value似乎是一个字符串,这就是<=无效的原因。尝试将参数作为整数传递并添加type => 'NUMERIC',这将把数据库存储的字符串作为数字处理。

修改:您似乎也可以使用DATE作为案例中的type [codex]