有一个插件,我正试着让它适应我的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排序,按发布年份排序。
下面是代码。
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';
}
}任何帮助都将不胜感激。谢谢。
发布于 2010-01-08 05:45:37
看看usort吧。您提供了一个比较函数,它可以查看每一项的内部情况,并选择排序依据。
发布于 2010-01-09 14:03:44
在您的示例中,每次执行$x->query_vars['meta_key']操作时都会覆盖以前的值,因此您只添加了最后一个meta_key作为选择选项。
最重要的是,WordPress只支持通过单个元键/元值比较拉取。要获得更复杂的比较,应该过滤posts_where_paged以添加更多比较,并使用posts_orderby来构造所需的order by子句。要实现这一点,您需要具备原始SQL查询编写的基础知识。
您还可以考虑重组数据,将发布日期转换为实际的日期格式,并使用类型转换来获取meta_value的字符串格式,并将其转换为日期字段,然后对其进行基于日期的适当排序操作。
https://stackoverflow.com/questions/2023868
复制相似问题