点了分类筛选,列表只剩下十二条,标题旁边还写着共 128 篇,翻页也还按 128 条算,翻到第二页直接空白。日志里能对上时间点,这种反而好排。

总数是页面首次加载时算好写进模板的,筛选只在前端隐藏了不匹配的卡片,计数没有跟着变。分页链接也是按全量数据生成的。这一点先确认清楚,后面就不用反复试。

$q = new WP_Query($args);
echo esc_html($q->found_posts);
// 分页用 $q->max_num_pages

「筛选总数不更新」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。

处理上按这个顺序:筛选走服务端查询,用同一套条件算总数,WP_Query 的 found_posts 就是筛选后的数量;前端筛选时同步更新计数节点,并重新生成分页;分页链接带上当前筛选参数,别只改列表不改页码。

结果对不对很好判断,选一个只有十二篇的分类,标题旁显示 12,分页只剩一页,翻页不再出现空白。

作者 9823189