add_filter('edit_posts_per_page', function ($per_page, $post_type) {
    return $per_page;
}, 10, 2);

在屏幕选项里把“每页显示条数”改成 100,保存后列表仍是 20 条,总页数也没变,换浏览器重新登录一样。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:主题在 pre_get_posts 里把 posts_per_page 固定成 20,覆盖了用户设置。另有一个过滤器挂在 edit_posts_per_page 上返回固定值,屏幕选项写进 user meta 也没用。

「后台每页条数不生效」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

处理上按这个顺序:检查 pre_get_posts 是否无条件设置 posts_per_page;移除 edit_posts_per_page 上的固定返回值;确认 user meta 里的 screen option 已写入。

确认没问题再收工,列表一次显示 100 条,总页数从 60 页降到 12 页,刷新后保持。

作者 9823189