简而言之,模板标记是一种从数据库查询信息并将其显示在网站正面的简单方法。 例如,我们可以使用the_author();
显示帖子作者的姓名the_author();
并使用the_title();
显示帖子或页面标题。
WordPress模板标记非常广泛,使我们可以完全自定义我们的网站,而无需第三方插件。 在本教程中,我们将向您展示如何创建一个自定义页面,该页面使用一组这些模板标签显示用户列表 。
此外,我们还将应用分页在多个页面中显示这些用户。 某些网站可能需要这样的页面。
创建自定义页面模板
首先,在激活的主题目录中创建一个新PHP文件。 在此示例中,我使用的是TwentyTwelve主题。 添加以下注释标记以将其注册为页面模板。
<?php
/*
Template Name: User Page
*/
在WordPress页面编辑器中,将其设置为您的作者页面的模板。
请注意,您不应将文件命名为author.php
因为WordPress已将其保留以显示作者帖子存档。
查询和公式
让我们设置公式。 打开我们刚刚在代码编辑器中创建的新模板。
首先,我们需要指定每个页面要显示的用户数。 我们在名为$number
的变量中设置此$number
。 每当您想更改页面上显示的用户数量时,请更改此变量中的值。
$number = 10;
添加以下代码段以查明当前的分页号。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
然后,使用以下代码,我们计算应在页面中传递的用户数(偏移量)–这将从第二页开始生效。
$offset = ($paged - 1) * $number;
我们需要在我们的网站上获得注册用户,并使用PHP count()
函数对总数进行count()
,如下所示。
$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>';
创建分页
当然,我们不想在一个页面中显示数百个用户。 因此,我们将创建分页链接并将结果分为多个页面。 此外,仅当注册的总用户数大于每页显示的用户数时,我们才会显示分页。
幸运的是,WordPress有一个模板标签,称为paginate_links()
,可让我们轻松创建分页。
<?php
if ($total_users > $total_query) {
echo '<div id="pagination" class="clearfix">';
echo '<span class="pages">Pages:</span>';
$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
'prev_next' => false,
'type' => 'list',
));
echo '</div>';
}
?>
所有代码
对于快捷方式,以下是您可以复制并粘贴到页面模板中的所有代码。
<?php
$number = 10;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$offset = ($paged - 1) * $number;
$users = get_users();
$query = get_users('&offset='.$offset.'&number='.$number);
$total_users = count($users);
$total_query = count($query);
$total_pages = intval($total_users / $number) + 1;
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>';
?>
<?php
if ($total_users > $total_query) {
echo '<div id="pagination" class="clearfix">';
echo '<span class="pages">Pages:</span>';
$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,
'prev_next' => false,
'type' => 'list',
));
echo '</div>';
?>
通过CSS中的一些调整,您可以使页面看起来更好。
任何问题? 在下面的评论框中让我们知道。
资源资源
- WordPress模板标签 – WordPress Codex
- WordPress页面模板 – WordPress Codex
- WordPress Codex:分页链接 – WordPress Codex
- 函数参考:获取用户 – WordPress Codex
- 在WordPress上显示作者列表 – Paulund.co.uk
翻译自: https://www.hongkiat.com/blog/wordpress-display-authors-pagination/