排序coauthors_wp_list_authors函数的输出 - Co-Authors Plus插件Wordpress

时间:2014-12-12 17:42:14

标签: php wordpress sorting wordpress-plugin

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
}

谢谢!

1 个答案:

答案 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');