WhatsApp 预览中的 WooCommerce 价格同步
WhatsApp 预览中的 WooCommerce 价格同步意味着,卡片上的数字是在卡片生成的那一刻从您的商品目录中读取的,而不是固化在某人曾经制作的一张图片里。当这一点成立时,唯一剩下的问题就是 WhatsApp 何时重新读取该链接,而这恰恰是任何商店都无法控制的一件事。
简要回答
只有当图片基于实时商品数据生成时,价格才可能出现在预览中。静态特色图片永远没有价格可显示;一次性设计好的卡片只会保留它当天所显示的价格。WooCommerce 默认不会提供带价格标记的图片,因此“预览中显示旧价格”的抱怨实际上包含两个问题:
- 卡片是否知道当前价格? —— 这是一个设计决策,也是你可以修复的问题。
- 价格变动后,平台是否重新读取了页面? —— 这取决于 WhatsApp 的刷新节奏,而不是你。
价格为何会过期
| 原因 | 您看到的现象 | 为什么会发生 |
|---|---|---|
| 标签指向特色图片 | 完全没有价格 | 产品照片中不含价格 |
| 卡片只制作过一次 | 设计当天的价格 | 没有任何机制会重新生成它 |
| 促销已结束 | 显示已结束折扣的划线价 | 图片仍带有旧徽章 |
| 页面缓存仍在提供旧 HTML | 又是旧卡片 | 爬虫始终看不到新的 og:image URL |
只有前三个与卡片本身有关。第四个涉及您的缓存层,而从外部看它完全一样——这正是 Instant WhatsApp Image Update for WooCommerce 中检查顺序很重要的原因。
同步卡片实际读取的内容
FastOG 会为每次请求签发一个封面 URL,而其中的属性来自实时商品数据:
| 卡片元素 | 来源 | 说明 |
|---|---|---|
| 价格 | get_price() |
对于折扣商品,这就是促销价 |
| 划线价(“原价”) | 常规价格 | 仅在商品确实处于促销状态时发送——若“原价”与当前价格相同,那就是一条无人获得的划线价 |
| 促销徽章 | 商品的促销状态 | 随促销开始和结束而出现和消失 |
| 库存 | 库存状态 | 反映渲染时的商品目录状态 |
| 图片 | 优先使用特色图片,其次使用图库 | 在卡片内部合成,而非由平台裁剪 |
这就是“动态”与真正动态之间的区别:这些值不是设计师填入的占位符,而是在每次构建卡片时从您的商店读取的。
“同步”在双向上的工作方式
目录 → 卡片。 上述每个值都在渲染时读取。更改价格后,下一次渲染就会显示新价格;没有导出步骤,也没有需要重新上传的文件。
卡片 → 缓存。 每个值还会包含在已签名的封面 URL 中。因此,编辑价格会改变 URL——这意味着旧图片不再可寻址,CDN 没有过期内容可供提供,也无需进行缓存清除。此类别中没有其他方案以这种方式工作,因为自托管插件将其图片的键绑定在一个永不改变的文件名上。
卡片 → Facebook。 保存产品会触发 WooCommerce 原生的 product.updated webhook,FastOG 会为该产品的永久链接排队一次 Meta 重新抓取,因此 Facebook 会替换缓存的卡片,而不是等待数周。请参阅强制刷新 Facebook Open Graph 缓存。
卡片 → WhatsApp。 无法推送任何内容。正确的卡片会在下一次读取时等待被获取。
定时促销的边界情况
一场午夜开始、无人触碰商品的促销完全不会触发任何 webhook——这个细节会击破所有“保存时刷新”的设计,包括我们的 Facebook ping。
拯救卡片的是它并非提前生成:封面是按请求基于当前目录数据构建的,因此午夜后的首次抓取就已经显示促销价和徽章。过时的数字只可能残留在平台的预览缓存中,并会按该平台自己的时间表被替换。一张被渲染而非导出的卡片,才是唯一能挺过无人保存的促销的类型。
验证价格数字是否同步
价格本身就显示在封面 URL 中,因此无需调试器即可检查:
# What the page is serving right now
curl -s https://your-store.com/product/example | grep -o 'og:image[^>]*' | head -1
# Open that cover URL in a browser and compare the number against the product page.
如果 URL 的参数和渲染出的卡片都带有当前价格,且商品页面显示的也是同一价格,则说明商店侧已同步,任何残留的过期内容都是平台缓存导致的。如果 URL 仍带有旧价格,则说明页面缓存正在提供编辑前的 HTML——请清除缓存。
要端到端地查看效果,请将商品 URL 粘贴到 See Your Links The Way Buyers Do:它会读取实时标签,并根据同一份商品数据渲染封面,与各平台当前会显示的内容并排对比。
常见问题
如何在 WhatsApp 链接预览中显示价格?
请提供一个包含价格的 og:image——这意味着该图片是根据您的商品目录生成的,而不是一张静态照片。WhatsApp 会以 1200×630 的尺寸渲染标签所指向的任何图片;只有当价格被绘制进该图片时,价格才会显示出来。
为什么我结束促销后,预览仍显示旧价格?
可能有两个原因:页面提供的图片没有变化(页面缓存,或静态图片),或者 WhatsApp 显示的是编辑前的缓存预览。请先检查当前的 og:image URL——如果其中的价格也是旧的,那么问题出在商店;如果价格是当前的,那么问题出在 WhatsApp。
卡片显示的是促销价还是原价?
显示促销价——即 WooCommerce 报告的当前价格——同时附带原价作为划线价(compare-at),且仅在商品确实处于促销状态时才显示。
所有套餐都会绘制价格和促销徽章吗?
是的。FastOG 的模板字段不按套餐等级限制:价格、划线价和库存徽章在所有套餐中均可用。套餐之间的差异在于页面类型、条目额度和模板范围,而不在于封面能显示什么。
已经分享过的链接,价格会更新吗?
对于 Facebook,FastOG 会在商品更新后请求重新抓取。对于 WhatsApp、LinkedIn 和 X,下一次读取会按照各平台自己的时间表进行;我们不对这些平台声称任何公开的时间保证或程序化刷新 API。
如果我改了价格但没改模板,会怎样?
这是正常情况,并且可以正常工作:模板定义布局,商品目录提供值。无需重新设计,也无需重新导出图片。
促销期间分享的链接,在促销结束后还会显示促销价吗?
仅在平台的缓存预览仍然存在期间才会如此。封面 URL 会随商品目录变化,因此第一次全新读取会得到促销结束后的卡片。
有免费套餐吗?
有。免费的 Community 套餐涵盖最多 100 个条目,覆盖商品、分类、商店和博客文章页面,包含五个基础模板以及 Black Friday 和 Seasonal Offer 商品模板。其封面干净整洁——没有任何套餐带有水印,Community 也不例外。Community 在共享的 Community 服务器上渲染,受商店/IP 速率限制约束,而非受品牌标识约束。付费套餐使用独立于 Community 的专用服务器,提高条目额度并解锁更多模板和功能(评分徽章从 Starter 起,metafield 映射从 Pro 起,作用域规则和优先渲染从 Scale 起)。付费套餐包含 14 天试用,无需信用卡。