对于开放注册的 WordPress 站点,我们可能需要在某个页面显示网站注册的用户。之前也分享过多个用户列表教程了我们不嫌教程方法多今天就在一起来学习一下如何创建一个支持分页的用户列表页面模板。

创建页面模板

首先,我们在主题根目录下新建一个 page-user-page.php 文件,然后复制主题的 page.php 的代码到这个文件(主要作用是使这个新的页面模板能够和主题页面的结构样式一致,本例中我们使用官方自带的 2014 主题的 page.php ), 然后在最顶部添加下面的页面模板声明信息:


<?php  
/*  
Template Name: User Page  
*/
?>

这样一来,你就可以在后台页面编辑界面选择对应的模板文件了。

查询和计算公式

接下来,在刚才的文件中找到类似于下面的代码(用于输出文章内容的代码):


<?php the_content(); ?>

在这行下面继续添加我们的代码。
首先,定义每页要显示的用户数量,这里添加一个名为 $number 的变量


<?php
$number = 10;

接着添加下面的代码片段以查明当前页码数。


$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

然后,使用下面的代码,我们计算应该在页面(偏移)被传递过来的用户数量,这将在第二页开始生效。


$offset = ($paged - 1) * $number;

我们还需要获取网站的所有用户,以及使用 count() 这个PHP函数来获取用户总数:


$users = get_users();  
$total_users = count($users);

我们还计算每页显示的信息,其中包括将要显示的用户数和偏移查询用户的总数。


$query = get_users('&offset='.$offset.'&number='.$number);

然后,我们计算应创建的总页数。我们可以通过总注册用户数量和每页显示的用户数来进行计算,如下所示。


$total_pages = intval($total_users / $number) + 1;

显示用户信息

我们已经设置了所需的公式,现在我们将在页面上显示结果。
在这个例子中,我们主要显示用户的头像、公开显示的名字以及个人简介。这些信息的获取可以使用 get_avatar() 和 get_the_author_meta() 函数获取。代码样例如下:


echo '<ul id="users">';  
foreach($query as $q) { ?>  
 
    <li class="user clearfix">  
        <div class="user-avatar">
            <?php echo get_avatar( $q->ID, 80 ); ?>      
        </div>  
        <div class="user-data">  
 
            <h4 class="user-name">  
                <a href="<?php echo get_author_posts_url($q->ID);?>">
                    <?php echo get_the_author_meta('display_name', $q->ID); ?>  
                </a>  
            </h4>  
 
            <?php if (get_the_author_meta('description', $q->ID) != '') : ?>  
                <p><?php echo get_the_author_meta('description', $q->ID); ?></p>  
            <?php endif; ?>  
 
        </div>  
    </li>  
 
<?php }   
echo '</ul>';