如何修改WordPress中paginate_links的分页输出样式并添加首页/末页链接
给WordPress paginate_links添加首页和末页链接的解决方案
我懂你想要的效果——给现有的分页加上「First(首页)」和「Last(末页)」跳转选项,让用户能快速跳转到首尾页对吧?WordPress原生的paginate_links函数确实没有直接支持这两个按钮的参数,但我们可以手动生成这两个链接,再和原生分页的输出拼接起来,完美实现你要的样式。
下面是修改后的完整代码,直接替换你原来的分页代码块就行:
<div class="pagination"> <span class="pages"> <?php // 保留你原来的总页数逻辑,确保$pages变量正确 if( empty( $var ) ) { global $wp_query; if( !isset( $wp_query->max_num_pages ) ) return; $pages = $wp_query->max_num_pages; } else { global $$var; if( !is_a( $$var, 'WP_Query' ) ) return; if( !isset( $$var->max_num_pages ) || !isset( $$var ) ) return; $pages = absint( $$var->max_num_pages ); } if( $pages < 1 ) return; $page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; echo 'Page ' . $page . ' of ' . $pages; ?> </span> <?php // 生成首页和末页链接(按需显示) $first_link = ''; if ($page > 1) { // 当前页不是第一页时,显示首页跳转链接 $first_link = '<a href="' . esc_url(get_pagenum_link(1)) . '" class="pagination-first">' . __('« First') . '</a>'; } $last_link = ''; if ($page < $pages) { // 当前页不是最后一页时,显示末页跳转链接 $last_link = '<a href="' . esc_url(get_pagenum_link($pages)) . '" class="pagination-last">' . __('Last »') . '</a>'; } // 生成原生分页链接并保存到变量 global $wp_query; $big = 999999999; $pagination_links = paginate_links( array( 'mid_size' => 2, 'prev_text' => __('«'), 'next_text' => __('»'), 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $pages, // 复用之前获取的总页数,确保逻辑统一 'type' => 'plain' // 输出纯文本链接,方便我们拼接自定义链接 ) ); // 拼接并输出所有分页元素 echo $first_link . ' ' . $pagination_links . ' ' . $last_link; ?> </div>
关键修改说明:
- 按需显示首尾页链接:
- 只有当前页不是第一页时,才渲染「« First」链接;
- 只有当前页不是最后一页时,才渲染「Last »」链接,避免出现无效的重复跳转按钮。
- 优化分页输出格式:给
paginate_links添加'type' => 'plain'参数,让它输出纯文本格式的链接列表,方便我们和自定义首尾页链接拼接。 - 统一总页数变量:把之前获取的
$pages变量传给paginate_links的total参数,不管你用的是全局WP查询还是自定义查询,分页逻辑都能保持一致。 - 自定义样式类:给首尾页链接分别加上
pagination-first和pagination-last类,后续你可以根据需要自定义样式(比如调整间距、颜色、 hover 效果等)。
这样修改后,就能完全实现你想要的分页样式:
- 第一页:
Page 1 of 20 1, 2, 3, 4, 5, ... » Last » - 中间页:
Page 10 of 20 « First « 10, 11, 12, 13, 14, ... » Last » - 最后一页:
Page 20 of 20 « First « ..., 16, 17, 18, 19, 20
内容的提问来源于stack exchange,提问作者Anpace
相关产品推荐
相关产品推荐

