为每个作者显示一篇文章,并按自定义域排序

时间:2012-12-16 作者:Marco

我用下面的函数为每个作者显示一篇文章,效果很好,但是否可以按自定义字段排序?

<?php
add_filter(\'posts_groupby\', \'author_groupby\');
function author_groupby($groupby)
{
 global $wpdb;
 $author_groupby = "{$wpdb->posts}.post_author";
    if(preg_match("/$author_groupby/", $groupby)) {
    // grouping we need is already there
    return $groupby;
  }
  if(strlen(trim($groupby) == 0)) {
    // groupby was empty, use ours
    return $author_groupby;
  }
  return "$groupby, $author_groupby";
}
我尝试了以下代码,但不起作用:

...
$author_groupby = "{$wpdb->posts}.post_author 
AND pm.meta_key = \'KEY\' 
ORDER BY pm.meta_value DESC Limit 0,1";
...
谢谢

2 个回复
SO网友:Mike Madern

您使用AND a后的语句GROUP BY 陈述这行不通。

尝试更改WHERE 声明(posts_where_paged 过滤器)添加AND pm.meta_key = \'KEY\' 线

此外,您还可以使用posts_orderby 过滤器以更改ORDER BY.

EDIT

您可以找到一些其他信息here.

SO网友:s_ha_dum

有一个posts_orderby 过滤器的工作原理与posts_groupby 您已经在使用的筛选器。因为我不知道你的密钥是什么,所以我不认为尝试编写代码有什么意义。

要使orderby正常工作,您可能需要对其进行筛选posts_fields 和/或posts_joins

我不知道你的问题是否精确到可以给出更好的答案。

http://codex.wordpress.org/Custom_Queries

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php