<?php
function custom_pagination() {
global $wp_query;
$total_pages = $wp_query->max_num_pages;
if ($total_pages <= 1) return;
$current_page = max(1, get_query_var('paged'));
$pagination = '<div class="pagination">';
// 上一页链接
if ($current_page > 1) {
$pagination .= sprintf(
'<a href="%s" class="prev">上一页</a>',
esc_url(get_pagenum_link($current_page - 1))
);
}
// 页码显示逻辑
if ($total_pages <= 6) {
// 总页数≤6时显示所有页码
for ($i = 1; $i <= $total_pages; $i++) {
$active_class = ($i == $current_page) ? ' active' : '';
$pagination .= sprintf(
'<a href="%s" class="page%s">%d</a>',
esc_url(get_pagenum_link($i)),
$active_class,
$i
);
}
} else {
// 总页数>6时的智能分页
$show_pages = [];
// 总是显示第1页
$show_pages[] = 1;
// 当前页附近的页面
$start = max(2, $current_page - 1);
$end = min($total_pages - 1, $current_page + 1);
// 确保显示足够的页码
if ($start > 2) {
$show_pages[] = '...';
}
for ($i = $start; $i <= $end; $i++) {
$show_pages[] = $i;
}
if ($end < $total_pages - 1) {
$show_pages[] = '...';
}
// 总是显示最后一页
if ($total_pages > 1) {
$show_pages[] = $total_pages;
}
// 生成页码链接
foreach ($show_pages as $page) {
if ($page === '...') {
$pagination .= '<span class="ellipsis">...</span>';
} else {
$active_class = ($page == $current_page) ? ' active' : '';
$pagination .= sprintf(
'<a href="%s" class="page%s">%d</a>',
esc_url(get_pagenum_link($page)),
$active_class,
$page
);
}
}
}
// 下一页链接
if ($current_page < $total_pages) {
$pagination .= sprintf(
'<a href="%s" class="next">下一页</a>',
esc_url(get_pagenum_link($current_page + 1))
);
}
$pagination .= '</div>';
echo $pagination;
}
// 调用分页函数
custom_pagination();
?>
版权声明:如发现本站有涉嫌抄袭侵权/违法违规的内容请联系客服!




