$args['tax_query'][] = array( 'taxonomy' => 'service_area', 'field' => 'slug', 'terms' => sanitize_title($area) );
服务区域筛选里选朝阳区,结果 0 条,后台明明有 14 个服务挂在这个区,换成北京反而能出全部。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,地区用自定义 taxonomy,term 名里带了全角空格,tax_query 的 terms 传的是手工输入的值。field 用 name 时按原样比较,多一个空格就匹配不到。
这次卡住的地方就在「服务区域筛选失效」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
处理上按这个顺序:tax_query 改用 term_id 或 slug,别拿中文名称做匹配;后台把地区 term 的空格统一清一遍,导入时也要 trim;用三个区各筛一次,数量和后台统计对一遍。
改完只确认一件事:选朝阳区出 14 条,和后台该区的服务数量一致,换 slug 后不再受空格影响。
