WhatsAppプレビューにおけるWooCommerceの価格同期
WhatsAppプレビューにおけるWooCommerceの価格同期とは、カード上の数値が、カードが生成される瞬間にカタログから取得されることを意味します。かつて誰かが一度だけ作成した画像に埋め込まれた数値ではありません。これが成り立つ場合、残る唯一の疑問はWhatsAppがいつリンクを再読み取りするかという点であり、これはどのストアも制御できない唯一の要素です。
簡潔な回答
価格がプレビューに表示されるのは、画像がライブの商品データから生成されている場合だけです。静的なアイキャッチ画像には表示できる価格がそもそも存在せず、一度だけ作成したカードにはその日時点の価格が残るだけです。WooCommerce はデフォルトでは価格をタグ付けした画像を提供しないため、「プレビューに古い価格が表示される」という不満は、実際には次の 2 つの問いに分かれます。
- カードは現在の価格を把握しているか? — これは設計上の判断であり、あなたが修正できるものです。
- 価格が変わってから、プラットフォームはページを再読み込みしたか? — これは WhatsApp 側のタイミングであり、あなたには制御できません。
価格が古くなる理由
| 原因 | 表示される内容 | なぜ起こるか |
|---|---|---|
| タグがアイキャッチ画像を指している | 価格がまったく表示されない | 商品写真には価格が含まれていない |
| カードが一度だけ作成された | デザイン当時の価格 | 何も再生成しない |
| セールが終了した | 終了した割引の取り消し線 | 画像に古いバッジが残っている |
| ページキャッシュが古い HTML を返している | 再び古いカード | クローラーが新しい og:image URL を一度も見ない |
カードに関する問題は最初の 3 つだけです。4 つ目はキャッシュレイヤーの問題であり、外から見るとまったく同じに見えます。だからこそ、Instant WhatsApp Image Update for WooCommerce のチェック順序が重要になります。
同期されたカードが実際に読み取る内容
FastOG はリクエストごとにカバー URL に署名し、props はライブの商品から取得されます:
| カード要素 | ソース | 備考 |
|---|---|---|
| 価格 | get_price() |
割引商品では、これがそのままセール価格です |
| 比較価格(「元値」) | 通常価格 | 商品が実際にセール中の場合にのみ送信されます — 現在価格と同じ「元値」は、誰も得しない取り消し線です |
| セールバッジ | 商品のセール状態 | セールに合わせて表示・非表示が切り替わります |
| 在庫 | 在庫状況 | レンダリング時点のカタログを反映します |
| 写真 | まずアイキャッチ画像、次にギャラリー | カード内で合成され、プラットフォームによって切り取られることはありません |
これが「動的」と本当に動的の違いです。値はデザイナーが埋めたプレースホルダーではなく、カードが生成されるたびにあなたのストアから読み取られます。
「同期」が双方向で機能する仕組み
カタログ → カード。 上記の値はすべてレンダリング時に読み取られます。価格を変更すれば、次回のレンダリングで新しい価格が表示されます。エクスポートの手順も、再アップロードするファイルもありません。
カード → キャッシュ。 各値は署名済みカバー URL の中にも格納されます。そのため、価格を編集すると URL が変わり、古い画像は参照できなくなり、CDN に古いコンテンツが残らず、キャッシュバスティングも不要になります。このカテゴリで同じ動作をするものは他にありません。セルフホスト型のプラグインは、決して変わらないファイル名をキーにして画像を管理するからです。
カード → Facebook。 商品を保存すると WooCommerce ネイティブの product.updated Webhook が発火し、FastOG がその商品のパーマリンクに対する Meta の再スクレイピングをキューに登録します。これにより、Facebook は数週間待つことなくキャッシュされたカードを置き換えます。詳しくは Force a Facebook Open Graph Cache Refresh をご覧ください。
カード → 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 に貼り付けてください。ライブのタグを読み取り、同じ商品データからカバーをレンダリングして、プラットフォームが現在表示する内容と並べて確認できます。
FAQ
WhatsAppのリンクプレビューに価格を表示するにはどうすればよいですか?
価格を含むog:imageを配信します。つまり、カタログから生成された画像であり、静的な写真ではありません。WhatsAppはタグが指す画像を1200×630でレンダリングします。価格は、その画像に描画されている場合にのみ表示されます。
セールを終了したのに、プレビューにまだ古い価格が表示されるのはなぜですか?
考えられる原因は2つあります。ページが配信する画像が変わっていない(ページキャッシュ、または静的画像)か、WhatsAppが編集前のキャッシュされたプレビューを表示しているかです。まず現在のog:image URLを確認してください。そこの価格も古ければストア側の問題であり、最新であればWhatsApp側の問題です。
カードに表示されるのはセール価格ですか、通常価格ですか?
セール価格です。これはWooCommerceが現在価格として報告するもので、通常価格が比較用(compare-at)として並べて表示されます。ただし、商品が実際にセール中の場合に限ります。
すべてのプランで価格とセールバッジが描画されますか?
はい。FastOGではテンプレートのフィールドがプランによって制限されることはありません。価格、比較価格、在庫バッジはすべてのプランで利用できます。プランの違いはページタイプ、アイテム上限、テンプレートの範囲であり、カバーに表示できる内容ではありません。
すでに共有されたリンクでも価格は更新されますか?
Facebookについては、FastOGが商品更新後に再スクレイピングをリクエストします。WhatsApp、LinkedIn、Xについては、次回の読み取りは各プラットフォーム独自のスケジュールで行われます。これらのプラットフォームについては、公開されたタイミングの保証やプログラムによる更新APIは謳っていません。
価格だけを変更し、テンプレートは変更しない場合はどうなりますか?
これは通常のケースであり、問題なく動作します。テンプレートがレイアウトを定義し、カタログが値を供給します。再設計も画像の再エクスポートも不要です。
セール中に共有されたリンクは、セール終了後もセール価格を表示し続けますか?
プラットフォームのキャッシュされたプレビューが残っている間だけです。カバーURLはカタログとともに変わるため、最初の新しい読み取りでセール終了後のカードが取得されます。
無料プランはありますか?
はい。無料のCommunityティアでは、商品、カテゴリ、ショップ、ブログ記事のページにわたって最大100アイテムを利用でき、5つの基本テンプレートに加えてBlack FridayおよびSeasonal Offerの商品テンプレートが含まれます。そのカバーはクリーンです。Communityを含め、ウォーターマークを付けるプランはありません。Communityは共有のCommunityサーバーでレンダリングされ、ブランディングではなくストア/IPのレート制限によって制約されます。有料プランはCommunityとは別の専用サーバーを使用し、アイテム上限を引き上げ、追加のテンプレートと機能を解放します(Starterから評価バッジ、Proからメタフィールドマッピング、Scaleからスコープ付きルールと優先レンダリング)。有料プランにはクレジットカード不要の14日間トライアルが含まれます。