价格区间拉到 0 到 100 元,标价正好 100 元的商品不出现,99.9 元的在,101 元的也不在,用户以为这类货没上架。日志里能对上时间点,这种反而好排。
筛选用的是 meta_query 的 BETWEEN,比较符号被写成了大于和小于,等于两端都被排除掉。另一处列表展示读的是含税价,筛选读的是未税字段,边界值本来就不在同一个数上。这一点先确认清楚,后面就不用反复试。
$meta_query[] = array( 'key' => '_price', 'value' => array(0, 100), 'compare' => 'BETWEEN', 'type' => 'NUMERIC' );
这次卡住的地方就在「价格区间边界漏项」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。
处理上按这个顺序:把比较符号换成 BETWEEN,或者写成大于等于加小于等于,两端都包含;确认筛选用的 meta key 和列表展示的价格是同一个,含税未税先统一;用 99.99、100、100.01 三个价格各建一件商品,跑一遍组合。
结果对不对很好判断,100 元整的商品出现在 0 到 100 的结果里,100.01 元的不出现,两端都对得上。
