先按分类筛选再输入关键词,分类条件立刻消失;反过来先搜索再点筛选,关键词又被清掉,两边只能留一个。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
$args = $_GET;
$args['cat'] = 3;
unset($args['paged']);
echo add_query_arg($args, home_url('/'));
搜索框和筛选器各自从当前地址重新拼参数,后提交的那个把前一个的键覆盖掉了,谁也没读对方的输入,页面看起来就像条件从没生效过。这一点先确认清楚,后面就不用反复试。
「筛选参数合并」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,统一从当前地址的查询参数复制一份出来再改;每次只改自己负责的那一项,其余的键原样保留;合并完成之后再生成地址,别在控件里各自拼接。
改完照着核一遍,搜索词和分类条件能同时留在地址里,结果按两者交集返回。
