同一个关键词刷新两次,页面上的「共 128 篇」变成 121 篇,下面的列表条数却一点没变,客户拿着截图来问我们。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

$q = new WP_Query($args);
echo $q->found_posts;
wp cache flush

总数来自单独的计数查询,条件和列表查询不一致,中间还夹着一层页面缓存,两个数字各算各的,越刷差得越多,谁都不服谁。这一点先确认清楚,后面就不用反复试。

碰到「搜索结果计数」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

具体做法是,把总数查询和列表查询的条件逐条对照上一遍;先清掉对象缓存和页面缓存,然后再对比一次数字;最后只保留一个计数来源,别再让两处各算各的。

改完照着核一遍,连刷多次总数保持一致,并且和列表实际返回的文章条数相同。

作者 9823189