WordPress按角色获取可分页的用户列表并显示最新文章

最近在开发一款多功能自媒体资讯Wordpress主题ygNews主题,想整一个按权限(管理员、编辑、作者、投稿者、订阅者)来获取用户列表的页面,同时获取用户的一篇最新文章,获取用户列表信息可以使用get_users函数。

于是在网上搜了搜,还真可以这样做,下面直接贴出整个模板页面代码。

<?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);?>" rel="external nofollow"  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="external nofollow"  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样式之类的自己喜欢什么样就写成什么样的,我这里就不贴出来了。

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录