wp cron event run woocommerce_scheduled_sales wp eval 'wc_delete_product_transients();'
活动价写着 11 月 10 日 23:59 结束,11 号上午目录页还是 39 元,点进详情页显示 59 元,同一件商品差 20 元。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,目录拿的是缓存里的 sale_price,详情页每次重新计算。促销结束时间过了,定时事件没跑,价格 transient 还留着旧值。
「促销价过期未刷新」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
处理上按这个顺序:确认 woocommerce_scheduled_sales 这个定时事件有没有正常执行;手动清一次商品价格缓存,把残留的旧值去掉;把服务器时区和站点时区对齐,结束时间按站点时区算。
改完只确认一件事:促销结束后目录页和详情页都显示 59 元,划线价消失。
