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

2008年11月20日15:52:30 技术分享 13 7,548

首先感谢 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'); ?>

评论已关闭!

目前评论:13   其中:访客  13   博主  0

    • 辐射鱼 辐射鱼 5

      占个沙发……

        • EaSy EaSy 5

          @辐射鱼 鄙视自占沙发的。

            • 辐射鱼 辐射鱼 5

              @EaSy 沙发有理,坚决不留沙发

          • xiaorsz xiaorsz 3

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

              • 辐射鱼 辐射鱼 5

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

              • 摩摩诘 摩摩诘 2

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

                  • 辐射鱼 辐射鱼 5

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

                  • 等待 等待 5

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

                    • Lia Lia 1

                      谢谢鱼哦!

                      • 知更鸟 知更鸟 5

                        收藏,留以后研究使用

                        • Lia Lia 1

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

                          • 菠菜 菠菜 4

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