最近开发了一款多功能的新闻视频类Wordpress主题,客户的网站用户也比较多,要求设计一个按权限(管理员、编辑、作者、投稿者、订阅者)来获取用户列表的页面,同时获取用户的一篇最新文章,获取用户列表信息可以使用get_users函数。
用户列表可以添加到模板页面中,也可以添加到小工具中,主题的作者墙页面就是链接到编辑、作者和投稿者三个页面,同时也添加了一个推荐作者小工具,主题都可以通过主题选项直接选择要推荐的用户,所以推荐作者小工具是相当不错。
WP用户列表模板页面代码
<?php
/*
*Template Name: 用户列表
*/
get_header(); ?>
<!-- 主体内容 -->
<section class="container">
<!--面包屑-->
<section class="wrapper">
<!-- 内容 -->
<section class="content-wrap">
<article class="entry user_list">
<header class="post-head">
<h2><?php the_title(); ?></h2>
</header>
<section class="user_content">
<!-- 编辑 -->
<ul>
<?php
$number = 2;//定义每页要显示的用户数量,添加一个 $number 的变量
$paged=( get_query_var( 'paged')) ? get_query_var( 'paged') : 1;//查明当前页码数
$offset=( $paged - 1) * $number;//计算应该在页面(偏移)被传递过来的用户数量,这将在第二页开始生效
$users=get_users( 'orderby=post_count&order=DESC&role=editor');//获取网站的所有编辑,其它权限的用户将editor修改就可以(下行代码中也有editor);如果要获取所有用户,将role=editor删除(前后的&要注意删除);如果是多站点,可以添加:blog_id = 1,1为博客ID,就可以获取多站点中任意站点的用户
$get_users=get_users( 'role=editor&offset='.$offset.'&number='.$number);//计算每页显示的信息,其中包括将要显示的用户数和偏移查询用户的总数
$total_users=count($users);//使用 count() 这个PHP函数来获取用户总数
$total_query=count($get_users);
$total_pages=intval($total_users / $number) + 1;//计算应创建的总页数
foreach ($get_users as $user) { ?>
<li>
<a href="<?php echo get_author_posts_url($user->ID);?>" title="<?php echo get_the_author_meta('display_name',$user->ID);?>" class="author_name">
<!--头像-->
<?php echo get_avatar($user->ID,100);?>
<!--名称-->
<?php echo get_the_author_meta('display_name',$user->ID);?>
</a>
<!--用户的最新文章-->
<?php $args=array(
'author'=> $user->ID,//用户ID
'post_type' => array('post','video'),//可添加任意文章类型,获取最新的
'post_status' => 'publish',//已发布的文章
'posts_per_page' => 1,//显示的文章数量
'caller_get_posts'=> 1 //让置顶文章变化普通文章
);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>">
<?php the_title(); ?>
</a>
<?php endwhile; } wp_reset_query(); ?>
</li>
<?php } ?>
</ul>
<!--分页-->
<?php if ($total_users> $total_query) {
echo '<div class="wp-pagenavi">';$current_page = max(1, get_query_var('paged'));echo paginate_links(array('base' => get_pagenum_link(1) . '%_%','format' => '/page/%#%/','current' => $current_page,'total' => $total_pages));echo '</div>';}?>
</section>
</article>
</section>
<!-- 内容end -->
<!-- 博客边栏 -->
<?php get_sidebar(); ?>
<!-- 博客边栏end -->
</section>
</section>
<!-- 主体内容end -->
<?php get_footer(); ?>
作者列表CSS样式
/*********作者列表*********/
.user_list ul li{
display: block;
width: 100%;
border-bottom: 1px #eee solid;
padding: 20px 100px 20px 60px;
overflow: hidden;
position: relative;
}
.user_list img{
position: absolute;
top: 50%;
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-ms-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
}
/*头像*/
.user_list img{
width: 48px;
border-radius: 100%;
left: 0;
border: 1px #f4f4f4 solid;
padding: 4px;
background-color: #f8f8f8;
}
/*名称与文章*/
.user_list ul li a{
display: block;
}
.user_list .author_name{
font-size: 17px;
}
.user_list .new_post{
font-size: 14px;
color: #999;
}
/*********作者列表end*********/
分页CSS样式
/*****用户列表分页*****/
.wp-pagenavi {
margin: 30px 0;
font-size: 13px;
text-align: center;
line-height: 24px;
width: 100%;
}
.wp-pagenavi > span,
.wp-pagenavi > a {
margin: 4px 6px 4px 0;
padding: 4px 12px;
text-decoration: none;
background-color: #fff;
border: 1px #f4f4f4 solid;
color: #666;
display: inline-block;
}
.wp-pagenavi a:hover,
.wp-pagenavi > .current{
background-color: #d11f3c;
color: #fff !important;
}
/*****用户列表分页end*****/

