首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress:如何在类别中执行嵌套排序以获得所需结果

WordPress:如何在类别中执行嵌套排序以获得所需结果
EN

Stack Overflow用户
提问于 2010-01-08 05:38:43
回答 2查看 631关注 0票数 0

有一个插件,我正试着让它适应我的meta_tags,以便在WordPress上使用。http://www.mikesmullin.com将其按标题称为类别。

我试图实现的是一种嵌套排序。我有三个meta_keys。选择-否、发布月份和发布年份。我想按发布年份(asc),发布月份(asc),然后选择否(asc)对帖子进行分类。例如: 1955 10 selection-no-1、1956 10 selection-no-2、1956 10 selection-no-5等等。

我已经修改了代码,但是,它只按最后列出的meta_key排序,按发布年份排序。

下面是代码。

代码语言:javascript
复制
add_action('pre_get_posts','sort_categories_by_title');

function sort_categories_by_title($x) {
if(is_category()) {
    $x->query_vars['orderby'] = 'meta_value';
    $x->query_vars['meta_key'] = 'selection-no';
    $x->query_vars['meta_key'] = 'release-month';
    $x->query_vars['meta_key'] = 'release-year';
    $x->query_vars['order'] = 'asc';
}
}

任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-01-08 05:45:37

看看usort吧。您提供了一个比较函数,它可以查看每一项的内部情况,并选择排序依据。

票数 1
EN

Stack Overflow用户

发布于 2010-01-09 14:03:44

在您的示例中,每次执行$x->query_vars['meta_key']操作时都会覆盖以前的值,因此您只添加了最后一个meta_key作为选择选项。

最重要的是,WordPress只支持通过单个元键/元值比较拉取。要获得更复杂的比较,应该过滤posts_where_paged以添加更多比较,并使用posts_orderby来构造所需的order by子句。要实现这一点,您需要具备原始SQL查询编写的基础知识。

您还可以考虑重组数据,将发布日期转换为实际的日期格式,并使用类型转换来获取meta_value的字符串格式,并将其转换为日期字段,然后对其进行基于日期的适当排序操作。

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

https://stackoverflow.com/questions/2023868

复制
相关文章

相似问题

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