增强 wp_list_authors 显示文章最多的作者

首先感谢 Lia 的投稿
Wordpress 的 wp_list_authors 函数能够列出所有作者和文章数量,但是不能按文章多少排序,以及不能够限制输出作者的个数。于是 Lia 自己动手,增强了 wp_list_authors 函数功能。
需要扩展的功能:
1. 输出文章最多的作者,并按文章数量排序;
2. 自定义输出作者的个数。
修改的内容:
1. 为 wp_list_authors 函数增加两个控制变量:limited 和 order

$defaults = array(
‘optioncount’ => false, ‘exclude_admin’ => true,
‘show_fullname’ => false, ‘hide_empty’ => true,
‘feed’ => ”, ‘feed_image’ => ”, ‘feed_type’ => ”, ‘echo’ => true,
‘limited’ => 5, ‘order’ => ‘DESC’
);

2. 重新构建查询语句

/** @todo Move select to get_authors(). */
$authors = $wpdb->get_results(“SELECT DISTINCT u.ID, u.user_nicename, COUNT( p.ID ) AS count from $wpdb->users AS u, $wpdb->posts AS p ” . ($exclude_admin ? “WHERE u.user_login <> ‘admin’ AND ” : ‘WHERE ‘) . “p.post_author = u.ID AND p.post_type = ‘post’ AND ( p.post_status = ‘publish’ OR p.post_status = ‘private’) GROUP BY p.post_author ORDER BY count ” . $order . “, display_name ASC” . ( ($limited >= 0) ? ( ‘ LIMIT ‘ . $limited ) : ”) );

参数:
1. wp_list_authors 的默认参数:
optioncount
(boolean) 显示作者文章数。
1 (true)
0 (false – 默认)

exclude_admin
(boolean) 剔除admin。
1 (true – 默认)
0 (false)

show_fullname
(boolean) 显示作者全名。 默认显示作者昵称。
1 (true)
0 (false – 默认)

hide_empty
(boolean) 隐藏尚未发表文章的作者。
1 (true – 默认)
0 (false)

feed
(string) 链接到作者 RSS feed 的显示文字。默认不显示。
feed_image
(string) 链接到作者 RSS feed 的图片的目录和文件名。如果定义了 feed_image,将会覆盖 feed 定义的文字。
2. 扩展参数:

limited
(int) 输出作者数目。
5 ( 默认)
0 (显示全部作者)

order
(string) 排序方式。
DESC (降序 – 默认)
ASC (升序 – 显示最不活跃的作者)

用法:

您可以将 wp_list_authors 复制到主题文件的functions.php 中进行修改,并更换函数名称,比如:most_active_authors,在需要显示的位置调用这个函数就可以了。如:

显示文章最多的前10名作者、文章数量:

    < ?php most_active_authors('optioncount=1&limited=10'); ?>


显示前5名最不活跃的作者,不显示文章数量:

    < ?php most_active_authors('order=ASC'); ?>


wp_list_authors 函数位于 wp-includes 目录下的 author-template.php 文件中。
计划:加入 gravatar 头像,制作一个插件。
辐射鱼补充:个人感觉没必要做成插件了,只需要加上如下语句即可

< ?php $author_email = get_the_author_email(); echo get_avatar($author_email, '50', 'wavatar'); ?>

Comments

13 responses to “增强 wp_list_authors 显示文章最多的作者”

  1. 辐射鱼 Avatar

    占个沙发……

    1. EaSy Avatar

      鄙视自占沙发的。

      1. 辐射鱼 Avatar

        沙发有理,坚决不留沙发

        1. 老孔 Avatar

          强烈鄙视!

  2. xiaorsz Avatar

    呵呵,博客就我一个作者!!
    不过收藏待用了!

    1. 辐射鱼 Avatar

      什么时候装大成多人博客?

  3. 摩摩诘 Avatar

    让我生出了搞团队博客的念头,哈

    1. 辐射鱼 Avatar

      嗯,支持!一个人的精力有限,团队博客可以拓展内容厚度和广度

  4. 等待 Avatar

    来晚了,随便占个地就算了。。。

  5. Lia Avatar

    谢谢鱼哦!

  6. 知更鸟 Avatar

    收藏,留以后研究使用

  7. Lia Avatar

    增加了 gravatar 头像和不显示制定用户功能,详细请看:
    http://www.antlite.com/blog/2008/11/most_active_authors-with-gravata/

  8. 菠菜 Avatar

    对于团队博客来说非常实用。