Co-Authors Plus插件有一个名为coauthors_wp_list_authors()
的函数,它会列出网站上使用的所有共同作者的列表。它接受许多与标准wordpress函数wp_list_authors()
相同的参数。
除非它不接受" order"或" orderby"。 (here's a list of what it accepts)。所以没有这些论点,如何自定义作者的排序顺序?
我的用法是"作者"列出网站上每位共同作者的页面。默认排序似乎是创建共同作者的日期。
我的功能如下:
function display_authors() {
$author_list = coauthors_wp_list_authors('number=500&echo=0');
?>
<div class="author_list"><ul><?php return $author_list ?></ul></div>
<?php
}
谢谢!
答案 0 :(得分:1)
有趣。我期待做同样的事情。我提交了pull request to the repo来过滤从get_terms返回的作者数组的功能。如果这被拉了,就像在coauthors_wp_list_authors_array
上添加过滤器并将该数组按照您想要的顺序过滤一样简单。在那之前...
---更新! (暗示未解之谜更新音乐)---
好的,所以看起来拉取请求已合并,并且已部署到Automattic的public SVN repo for VIP plugins,但他们没有更新.org plugin,所以请随意纠缠它们来更新它: - )< / p>
为谨慎起见,我会将关于如何使用此过滤器的wordpress.org forum thread的回复复制到,例如,按display_name排序:
好的,这是未经测试的,但应该工作。它也可能不是最有效的做事方式。
如果要按其他属性排序,请按display_name排序,将display_name
更改为行中的属性
$sorted[$item->display_name][] = $item;
请注意,两个对象('mock'用户对象和WP_User对象)必须具有相同的属性才能工作,还要注意WP_User对象如何使用魔术方法__get()。
function coauthor_sort( $authors ) {
$sorted = array();
foreach ($authors as $item) {
$sorted[$item->display_name][] = $item;
}
uksort($sorted, "strnatcasecmp");
$sorted_authors = array();
foreach ($sorted as $subArray) {
foreach ($subArray as $item) {
$sorted_authors[] = $item;
}
}
return $sorted_authors;
}
add_filter('coauthors_wp_list_authors_array','coauthor_sort');