商品页一直显示仅剩三件,运营后台库存改到两百,刷新前台还是三件,客户截图来问是不是骗人。换浏览器也一样。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

$stock = $product->get_stock_quantity();
if ($stock !== null && $stock <= 5) {
  echo '仅剩 ' . intval($stock) . ' 件';
}

库存数字直接写在模板文案里,没有走商品对象的库存字段。缓存插件又把整页 HTML 存了下来,即便接了动态变量也不会更新。这一点先确认清楚,后面就不用反复试。

「库存提示写死」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

具体做法是,模板改用商品对象的库存方法取数,别在文案里写常量;库存变化时清掉该商品的页面缓存,或者把这块做成不缓存的片段;低库存阈值单独配置,别把三这个数字散落在多个模板里。

改完照着核一遍,后台把库存从 3 改成 200,前台刷新后提示消失,改回 4 又按阈值显示。

作者 9823189