移动端调 /wp-json/wc/v3/products 拿目录数据,price_html 每条都是空字符串,价格区域整块不显示,同一份数据里 price 字段倒是有值。日志里能对上时间点,这种反而好排。

price_html 由 wc_price 和模板函数拼出来,REST 请求默认不加载前台那套函数。过滤器里直接调 get_price_html 拿不到格式化结果,字段还在,值是空的。这一点先确认清楚,后面就不用反复试。

require_once WC_ABSPATH . 'includes/wc-price-functions.php';
$data['price_html'] = $product->get_price_html();

「目录接口字段缺失」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:在接口回调里先引入 wc-price-functions,或者干脆让前端用 price 字段自己格式化;确实要返回 HTML 的,就在 rest 准备阶段补 require_once;用 curl 看完整 JSON,别只看前端映射后的结果。

结果对不对很好判断,接口返回的 price_html 带 ¥ 符号和促销标签,前端价格区正常渲染。

作者 9823189