首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于自定义邮政类型值的WP_Query滤波器

问基于自定义邮政类型值的WP_Query滤波器
EN

Stack Overflow用户
提问于 2014-01-04 22:51:53
回答 1查看 1.3K关注 0票数 0

我无法通过自定义post类型筛选结果。

这是my循环,它返回所有项。我需要按日期过滤,只显示比CURDATE()更早的日期

代码语言:javascript
复制
$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表中,我有以下数据

代码语言:javascript
复制
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帖子。

EN

回答 1

Stack Overflow用户

发布于 2014-01-05 06:09:02

使用CURDATE没有意义,因为用于存储MySQL值的post_meta字段类型是字符串,而不是日期。

考虑存储时间和日期值。

  • 在一个单独的后置元字段中,以及
  • 作为unix时间戳(数字值)。

然后,可以很容易地使用>或<比较来限制查询,比如

代码语言:javascript
复制
$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函数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20927726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档