5个带有示例的WordPress分页代码片段[从简单到高级]
已发表: 2020-02-03
如果您正在寻找 WordPress 中带有特定示例的最佳分页代码,您会发现这篇文章中共享的分页代码片段示例非常有用。 您可以在 WordPress 主题或需要帖子分页的自定义 WordPress 插件中应用此分页代码。 让我切入正题,分享我最喜欢的分页代码片段:
#1) 带有简单分页代码的 WordPress 循环
如果要在 WordPress 循环中添加分页,可以使用下面的下一个和上一个分页代码:
<?php if ( have_posts() ) : ?>
<!-- 在此处添加分页功能。 -->
<!-- 主循环的开始。 -->
<?php while ( have_posts() ) : the_post(); ?>
<!-- 主题主循环的其余部分 -->
<?php 结束; ?>
<!-- 主循环结束 -->
<!-- 在此处添加分页功能。 -->
<div class="nav-previous alignleft"><?php previous_posts_link('旧帖'); ?></div>
<div class="nav-next alignright"><?php next_posts_link('较新的帖子'); ?></div>
<?php 其他:?>
<p><?php _e('抱歉,没有帖子符合您的条件。'); ?></p>
<?php endif; ?>
#2) WordPress 数字分页
另一个很棒的 WordPress 分页选项是使用数字分页,将数字添加到帖子并根据数字对帖子进行分组。 例如,您可以在一个页面上显示 5 个帖子。 这是WordPress 中用于数字分页的分页代码:
<?php
#STEP 1:创建数字WordPress分页功能
函数 njengah_numeric_pagination() {
if( is_singular() )
返回;
全局 $wp_query;
/** 如果只有 1 页则停止执行 */
如果($wp_query->max_num_pages <= 1)
返回;
$paged = get_query_var('paged') ? absint(get_query_var('paged')):1;
$max = intval($wp_query->max_num_pages);
/** 将当前页面添加到数组中 */
如果 ( $paged >= 1 )
$链接[] = $分页;
/** 将当前页面周围的页面添加到数组中 */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
回声'<div class="navigation"><ul>'。 "\n";
/** 上一篇文章链接 */
如果(get_previous_posts_link())
printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
/** 链接到第一页,必要时加上省略号 */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' 类="活动"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
如果(!in_array(2,$链接))
回声'<li>…</li>';
}
/** 链接到当前页面,如有必要,在任一方向加上 2 个页面 */
排序($链接);
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' 类="活动"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}
/** 链接到最后一页,必要时加上省略号 */
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) )
回声'<li>…</li>'。 "\n";
$class = $paged == $max ? ' 类="活动"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
}
/** 下一篇文章链接 */
如果 ( get_next_posts_link() )
printf( '<li>%s</li>' . "\n", get_next_posts_link() );
回声'</ul></div>'。 "\n";
}
#STEP 2:使用对上述函数的调用添加到模板
njengah_numeric_pagination();
#STEP 3:适当设置分页样式以适合您的主题样式
/** 用于设置分页样式的 CSS 类*/
.导航李{
}
.navigation li a{
}
#3) WordPress Ajax 分页示例
如果您正在寻找 WordPress 中的 Ajax 分页代码,我在 GitHub 上找到了一个运行良好的示例,并且代码采用插件的形式。 我已经对其进行了定制,使其成为我们教程的插件,并且可以将代码复制到文件中并以 zip 格式保存并作为插件安装。 以下是 WordPress Ajax 分页示例代码:

<?php
/**
* 插件名称:Njengah Ajax 分页
* 插件 URI:https://njengah.com
* 描述:WordPress Ajax 分页示例。
* 版本:1.0.0
* 作者:乔恩杰加
* 作者 URI:https://njengah.com
* 许可证:GPL-2.0+
* 许可证 URI:http://www.gnu.org/licenses/gpl-2.0.txt
* 文本域:cs-pagination
* 域路径:/languages
*/
// 信用 - 卡斯珀舒尔茨
类 Njengah_Ajax_Pagination {
受保护的 $num_per_page;
公共函数 __construct() {
$this->num_per_page = 5;
$this->init();
}
受保护的函数初始化(){
add_action('init', array($this, 'add_rewrite_rule'));
add_filter('query_vars', 数组($this, 'add_query_vars'));
add_action('parse_request', array($this, 'parse_request'));
}
/**
* 解析传入的请求并生成结果。
*/
函数解析请求($wp){
if (array_key_exists('cs-page', $wp->query_vars)) {
$page = isset ($wp->query_vars['cs-page']) ? $wp->query_vars['cs-page'] : 1;
$args = 数组(
'post_type' => '发布',
'post_per_page' => $this->num_per_page,
'分页' => $page,
);
$query = new WP_Query($args);
// 我们需要知道找到的帖子总数。
$values['total'] = $query->found_posts;
// 以及每页。
$values['per_page'] = $this->num_per_page;
$values['posts'] = array();
// 让我们只发送我们需要的数据。
而 ( $query->have_posts() ) {
$query->the_post();
$values['posts'][] = array(
'ID' => get_the_ID(),
'title' => get_the_title(),
);
}
wp_reset_postdata();
wp_send_json( $values );
}
}
/**
* 添加所需的查询参数。
*/
函数 add_query_vars( $query_vars ) {
$query_vars[] = 'cs-page';
返回 $query_vars;
}
/**
* 为我们的自定义分页添加重写规则,这样我们就可以避免使用 admin-ajax。
*/
功能 add_rewrite_rule() {
add_rewrite_rule( '^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', 'top' );
}
/**
*刷新重写规则。
*/
静态函数安装(){
刷新重写规则();
}
}
功能 njengah_ajax_pagination_init() {
新的 Njengah_Ajax_Pagination();
}
njengah_ajax_pagination_init();
// 需要在激活时刷新重写规则。
register_activation_hook( __FILE__, array( 'Njengah_Ajax_Pagination', 'install' ) );
#4) 自定义帖子类型的 WordPress 分页
对于自定义帖子类型分页,您需要使用 WP_query 来检查自定义帖子类型,并在参数中,在 post_type 中传递自定义帖子类型,然后使用分页代码为自定义帖子类型创建 WordPress 分页。
以下是您应该添加到 functions.php 并用您各自的自定义帖子类型 slug 替换 post_type 的代码:
<?php
/**
* 自定义帖子类型的 WordPress 分页
*/
<?php
$paged = (get_query_var('paged')) ? get_query_var(“分页”):1;
$args = 数组(
'post_type' => 'custom_post_type_name',
'posts_per_page' => 10,
'分页' => $分页
);
$loop = new WP_Query($args);
while ( $loop->have_posts() ) : $loop->the_post();
// 自定义帖子类型内容
结束;
?>
<nav class="分页">
<?php
$大 = 999999999;
回声分页链接(数组(
'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
'格式' => '?paged=%#%',
'当前' => 最大值(1,get_query_var('paged')),
'total' => $loop->max_num_pages,
'prev_text' => '«',
'next_text' => '»'
));
?>
</nav>
<?php wp_reset_postdata(); ?>#5 自定义查询分页 WordPress
WordPress 中的自定义查询分页代码利用 WP_query 来获取我们要分页的特定帖子,然后将查询结果与分页代码结合起来,将分页应用于我们选择的特定帖子。 以下是 WordPress 中自定义查询分页的示例。
<?php
//自定义查询
$paged = (get_query_var('paged')) ? absint(get_query_var('paged')):1;
$args = 数组(
'posts_per_page' => 5,
'category_name' => '画廊',
'分页' => $分页,
);
$the_query = new WP_Query($args);
?>
<!-- 循环等.. -->
<?php
// 分页
$大 = 999999999; // 需要一个不太可能的整数
回声分页链接(数组(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'格式' => '?paged=%#%',
'当前' => 最大值(1,get_query_var('paged')),
'total' => $the_query->max_num_pages
));结论
在这篇文章中,我们重点介绍了不同类型的 WordPress 分页,并共享了用于每种情况的特定分页代码。 WordPress 中的此分页代码可以添加到现有主题或插件中,也可以作为独立插件添加到 WordPress。
