最近在帮公司做技术博客主题(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里的一大段注释,是作者文章列表链接的两种方式。因为这个循环没法直接输入这个链接,只能靠拼接了。
为什么我要把个人站点和微博等信息也输入来呢?其实我这个需求里是没有用到的。这里是提示大家,如果要做个专门的作者详细资料列表页面,里面就可以用到这些信息了,靠大家发散思维啦!
如果哪位高手会联合表查询,查到作者发表的文章数等信息,欢迎联系我改进哈!
西门也开始搞技术了啊。。哈哈哈 顶!
稿子有多牛逼,瞻仰瞻仰,我这几天也还原了一个设计稿。。
$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;
}
你这样循环里面套循环,效率太低了吧?
不用套循环_(:з」∠)_ 脑残写错了。直接$posts->count就是你循环里获得的id的文章数
但是你用了我之前循环里的$author->ID呀,我不把这个放到循环里,怎么用这个作者ID?
我比较笨哈,麻烦多解释一下,我还是希望做好一点的 🙄
啊列 我是指我写的那个foreach不用
看来我也得整个在首页才行,要不老有人误会我是女的。。。
路过 低调的路过
啥样的稿子,球看
是个好东西,我找了很久了
正在找这个代码,你就写了。
好啊。西门
你网站居然加弹窗。。。你的评论也被拦截了。。。
有弹窗?不可能吧。没加过!
今天看了一下,没有了,正常
应该是我家电信劫持
那要给这个作者邮箱限制个数量呢?该如何操作啊?
在线求答复
现在这个是有多少作者就显示多少条,我想就显示3个作者信息。。。该如何操作呢?
如果你是固定三个作者的话,直接把sql语句改改,where这3个作者的user_login试试。
你做的这个平台,域名是多少啊?
一直都没对外开放,写的人少 ➡
好吧 🙁
可以用get_author_posts_url快速获取作者文章列表。博客不错哦,留个脚步~
忘了说了,有个函数get_users
看看