最近开发了一款多功能的新闻视频类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*****/