西门的后花园

一个热爱网络的年轻人的博客

WordPress首页做作者墙(作者列表信息)

最近在帮公司做技术博客主题(WordPress平台),第一次做这么优秀的交互设计师和视觉设计师出的博客主题UI稿,很是激动。因为公司的交互、视觉都是非常专业的,薪资比我高很多,只能抬头仰望啊!

关注不同领域的人在一起合作,一定会擦出不一样的火花!例如设计师想在首页展示一个作者墙,看了交互稿和UI稿后,这里会展示所有作者的信息,包括作者头像、昵称、个人说明、作者文章列表链接。

我没做过,就搜索。搜索出来的结果,基本上都是说wp_list_authors(作者列表)这个函数。我试了一下,这个函数只能简单的输入作者昵称、文章列表链接、文章数等链接,满足不了我的需求。然后Google搜英文关键字,居然找到一段代码基本满足我的需求,可以显示头像、昵称、个人说明,甚至我之前写的《完美实现WordPress自定义增加删除个人资料并且展示文章页》所有自定义字段都可以显示出来,真是太好了。所以看下面的代码之前,最好能复习下我上面那篇文章,不然有的代码会看不懂。

把下面一段代码,复制到index.php你需要的地方:

<ul>
<?php
global $wpdb;
//所有作者
$authors = $wpdb->get_results("SELECT ID, user_login from $wpdb->users ORDER BY display_name");
//除了admin外的作者
//$authors = $wpdb->get_results("SELECT ID, user_login from $wpdb->users WHERE user_login <> 'admin' ORDER BY display_name");
foreach ($authors as $author) {
//修改过固定链接
echo "<li><p><a href='".get_bloginfo('url')."/author/".get_the_author_meta('user_login', $author->ID)."'>".get_avatar($author->ID,50)."</a></p>";
//默认链接
//echo "<li><p><a href='".get_bloginfo('url')."?author=".$author->ID."'>".get_avatar($author->ID,50)."</a></p>";

//作者昵称
the_author_meta('display_name', $author->ID);
//个人网站
if(get_the_author_meta('url', $author->ID)){
echo "<p><a href='".get_the_author_meta('url', $author->ID)."'>个人网站</a></p>";
}
//新浪微博
if(get_the_author_meta('weibo_sina', $author->ID)){
echo "<p><a href='".get_the_author_meta('weibo_sina', $author->ID)."'>新浪微博</a></p>";
}
//腾讯微博
if(get_the_author_meta('weibo_tx', $author->ID)){
echo "<p><a href='".get_the_author_meta('weibo_tx', $author->ID)."'>腾讯微博</a></p>";
}
//个人说明
if(get_the_author_meta('description', $author->ID)){
echo get_the_author_meta('description', $author->ID);
}
echo "</li>";
}
?>
</ul>

代码里面有我加的html标签,你要用的话,一定要根据自己的结构来修改标签。下图是没有样式的结果,符合我的要求:

效果图

其中第一大段注释,表示是否需要显示管理员。这里有个缺点,排序是按照昵称名的顺序来排列的。因为只查询了wp_users一张表,表里没有作者发表文章数量,所以比较局限。

foreach里的一大段注释,是作者文章列表链接的两种方式。因为这个循环没法直接输入这个链接,只能靠拼接了。

为什么我要把个人站点和微博等信息也输入来呢?其实我这个需求里是没有用到的。这里是提示大家,如果要做个专门的作者详细资料列表页面,里面就可以用到这些信息了,靠大家发散思维啦!

如果哪位高手会联合表查询,查到作者发表的文章数等信息,欢迎联系我改进哈!

评论列表

  1. 西门也开始搞技术了啊。。哈哈哈 顶!

  2. 稿子有多牛逼,瞻仰瞻仰,我这几天也还原了一个设计稿。。

  3. $posts = $wpdb->get_results("SELECT COUNT(*) AS count FROM $wpdb->posts WHERE post_author = ". $author->ID . " AND post_status = 'publish' AND post_type = 'post'");
    foreach ($posts as $post) {
    echo $post->count;
    }

  4. 看来我也得整个在首页才行,要不老有人误会我是女的。。。

  5. 路过 低调的路过

  6. 啥样的稿子,球看

  7. 是个好东西,我找了很久了

  8. 正在找这个代码,你就写了。
    好啊。西门

  9. 那要给这个作者邮箱限制个数量呢?该如何操作啊?

  10. 现在这个是有多少作者就显示多少条,我想就显示3个作者信息。。。该如何操作呢?

  11. 你做的这个平台,域名是多少啊?

  12. 可以用get_author_posts_url快速获取作者文章列表。博客不错哦,留个脚步~

  13. 忘了说了,有个函数get_users

西门进行回复 取消回复

分类目录