我无法按自定义帖子类型
过滤结果这是我的while循环,返回所有项目。我需要按日期过滤,只显示早于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_details仅显示auction_date早于今天日期的帖子。
答案 0 :(得分:0)
使用CURDATE是没有意义的,因为用于存储post_meta值的MySQL字段类型是字符串,而不是日期。
考虑存储您的时间和日期值
然后,您可以轻松地使用>限制查询。或者<比较,像
$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()
(使用PHP中系统范围的时区设置的本机PHP函数) )在使用WordPress时转换时间戳。)