我无法通过自定义post类型筛选结果。
这是my循环,它返回所有项。我需要按日期过滤,只显示比CURDATE()更早的日期
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$auction_query = new WP_Query();
$auction_query->query('post_type=auctions&orderby=meta_value&meta_key=auction_details&paged='.$paged.'&posts_per_page=20');在我的wp_postmeta表中,我有以下数据
meta_id: [id of meta row]
post_id: [id of post]
meta_key: auction_details
meta_value: a:6:{s:12:"auction_date";s:10:"2013-07-27";s:12:"auction_time";s:21:"9am Personal Property";s:16:"auction_location";s:44:"New Providence,";s:0:""当与meta_key auction_details配对时,我需要在meta_key列中筛选拍卖日期值,只显示比今天日期更早的auction_date帖子。
发布于 2014-01-05 06:09:02
使用CURDATE没有意义,因为用于存储MySQL值的post_meta字段类型是字符串,而不是日期。
考虑存储时间和日期值。
然后,可以很容易地使用>或<比较来限制查询,比如
$args = array(
'meta_query' => array(
array(
'key' => 'auction_time',
'value' => date_i18n( 'U' ),
'compare' => '<',
)
)
);
$auction_query = new WP_Query( $args );如果您希望按此字段进行排序,请确保按'meta_value_num‘而不是通常的'meta_value’进行排序,因为后者将按单词而不是数字排序。
(注意:在转换时间戳时,要小心使用date_i18n() ( WordPress使用WordPress时区首选项提供的函数),而不要使用date() (使用系统范围时区设置的原生WordPress函数)。
https://stackoverflow.com/questions/20927726
复制相似问题