WordPress分页.current类不更新问题求助
解决WordPress自定义分页.current类不更新的问题
原因1:自定义查询未正确传递分页参数
如果你的分页基于自定义WP_Query而非主循环,必须确保查询中包含paged参数,否则WordPress无法识别当前页码,导致.current类始终停留在第一页。
解决步骤:
- 针对常规页面,在自定义查询中添加
paged参数:
$paged = get_query_var('paged') ? get_query_var('paged') : 1; $custom_query = new WP_Query([ // 其他查询参数(如post_type、posts_per_page等) 'paged' => $paged ]);
- 如果是静态首页(设置为首页的独立页面),需改用
page参数:
$paged = get_query_var('page') ? get_query_var('page') : 1;
原因2:分页HTML结构嵌套导致样式匹配失效
你的代码中设置了before_page_number和after_page_number,会给所有页码添加额外的<span>嵌套,导致原本针对.current类的CSS选择器无法正确匹配。
调整方案1:移除额外的span包裹
如果不需要外层span,直接删除before_page_number和after_page_number参数:
function tevent_pagination() { $allowed_html = [ "span" => [ "class" => [] ], "a" => [ "class" => [], "href" => [] ] ]; $args = []; printf("<nav class='pagination'>%s</nav>", wp_kses(paginate_links($args), $allowed_html)); }
调整方案2:保留span包裹并修正CSS选择器
如果必须保留外层span,修改CSS选择器适配嵌套结构:
原样式可能为:
.pagination span.current { /* 你的样式代码 */ }
需改为:
.pagination span.current span { /* 你的样式代码 */ }
原因3:WP_KSES过滤规则异常(可能性低)
虽然你的$allowed_html已允许class属性,但可临时移除wp_kses测试是否为过滤问题:
printf("<nav class='pagination'>%s</nav>", paginate_links($args));
如果此时.current类正常更新,说明过滤规则存在问题,可调整$allowed_html为:
$allowed_html = [ "span" => [ "class" => true // 允许所有class属性值 ], "a" => [ "class" => true, "href" => true ] ];
内容的提问来源于stack exchange,提问作者Hashim Abbas
相关产品推荐
相关产品推荐

