扩展 wp_list_authors 显示最活跃 文章最多的作者
最近和朋友一起用 Wordpress 搭建一个多作者的博客网站,需要显示最活跃、文章最多的作者。Wordpress 的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. 扩展参数:
- limit
- (int) 输出作者数目。
- 5 ( 默认)
- 0 (显示全部作者)
- order
- (string) 排序方式。
- DESC (降序 - 默认)
- ASC (升序 - 显示最不活跃的作者)
用法:
您可以将 wp_list_authors 复制到主题文件的functions.php 中进行修改,并更换函数名称,比如:most_active_authors,在需要显示的位置调用这个函数就可以了。如:
显示文章最多的前10名作者、文章数量:
<ul>
<?php most_active_authors('optioncount=1&limit=10'); ?>
</ul>
显示前5名最不活跃的作者,不显示文章数量:
<ul>
<?php most_active_authors('order=ASC'); ?>
</ul>
wp_list_authors 函数位于 wp-includes 目录下的 author-template.php 文件中。
计划:
加入 gravatar 头像,制作一个插件。
——————————————————————————————————————
11月22日 增加 gravatar 头像和不显示指定用户功能

赞一个
[...] 上一篇文章扩展 wp_list_authors 显示最活跃 文章最多的作者仅仅能够显示文章的作者,现在我们来给 wp_list_authors 增加了 Gravatar 头像以及不显示指定用户的功能。 [...]