按作者筛选出 36 篇文章,点第 2 页回到全部 1200 篇,地址栏里只剩 paged=2,author 参数没了。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,分页链接由 paginate_links 生成,只带 paged,没有把当前筛选参数合并进去。筛选表单用的又是 POST,翻页时请求方法变成 GET,条件自然丢失。
「后台列表筛选分页」这类改动最怕改一半,回滚脚本先准备好,再动生产。报错里带路径的,先去看那个路径在不在、权限对不对。
$link = add_query_arg(['author' => $author, 'paged' => '%#%'], admin_url('edit.php'));
$pagination = paginate_links(['base' => $link, 'total' => $total]);
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,把筛选表单的 method 改成 get;用 add_query_arg 把 author 和 meta 条件拼进分页链接;在 get_pagenum_link 过滤器里兜底保留参数。
最后用这个标准收尾,第 2 页仍只显示该作者的 18 篇,URL 里 author 与 paged 同时存在。
