2026年8月4日
2026年8月4日
WordPressでProductスキーマを実装してGoogleのショッピング系検索結果に対応する方法
WordPress で商品ページを Google の商品向けの表示(価格や在庫、評価が付いた検索結果、ショッピング タブなど)に載せるには、Product の構造化データを正しく出力し、必要に応じて Google Merchant Center と組み合わせます。WooCommerce を使っているなら、Product の構造化データは標準で出力されているので、まずは中身を確認し、足りない項目をフィルターで補うのが近道です。
この記事では、Google が区別している2種類の Product 表示の違い、WooCommerce での確認と追加の方法、Merchant Center との関係、検証の手順を説明します。構造化データは表示の対象になるための条件を満たすもので、表示されることを保証するものではありません。
Google の「商品スニペット」と「販売者のリスティング」の違い
Google 検索セントラルでは、Product の構造化データを使う表示を大きく2つに分けて説明しています(2026年10月現在)。
商品スニペット(product snippets):検索結果の通常の結果に、評価の星、価格、在庫状況などを添えて表示するものです。商品を直接販売しているページだけでなく、商品レビュー記事のように商品について書いたページも対象になります。
販売者のリスティング(merchant listings):その場で商品を購入できるページ向けの表示で、ショッピング関連の表示枠や画像検索などで、価格・配送・返品条件といった詳しい情報とともに表示される可能性があります。こちらは販売しているページだけが対象です。
どちらを狙うかで必要な項目が変わります。商品スニペットは name に加えて review・aggregateRating・offers のいずれかが必要です。販売者のリスティングでは name・image・offers(価格 price と通貨 priceCurrency を含む)が求められ、在庫状況、商品の状態、GTIN などの商品識別子、ブランド、配送情報、返品ポリシーが推奨項目として挙げられています。必須・推奨の区分は改訂されることがあるので、実装前に Google のドキュメントで最新の一覧を確認してください。
Merchant Center との関係
「ショッピング タブに出したい」という場合、構造化データだけでなく Google Merchant Center の利用を考えます。Merchant Center に商品データを登録すると、無料リスティングとしてショッピング関連の面に掲載される対象になります。Google は、構造化データと Merchant Center のフィードを併用することを勧めています。
WooCommerce には Google が提供する連携拡張(Google for WooCommerce)があり、商品データを Merchant Center に送れます。拡張の名前や機能は変わってきた経緯があるので、導入時は WooCommerce の拡張ページで現在の内容を確認してください。Merchant Center 側でもサイトの構造化データを読み取って商品情報を更新する仕組みがありますが、使える機能はアカウントの状態によって異なります。
WooCommerce が出力している構造化データを確認する
WooCommerce は商品ページに JSON-LD 形式で Product の構造化データを出力します。名前、説明、画像、SKU、価格、在庫状況、レビューがあれば評価などが含まれます。
まず、商品ページの URL を Google のリッチリザルト テストに入れ、どの項目が検出されているか、警告が出ている項目は何かを確認します。よくある警告は、ブランドや商品識別子(GTIN など)、配送情報、返品ポリシーが無いというものです。
あわせて、SEO プラグイン(Yoast SEO の WooCommerce 向けアドオンや Rank Math など)を使っている場合は、プラグイン側も Product を出力していないかを確かめます。同じページに内容の食い違う Product が2つあると、どちらを使うべきか判断できず、警告の原因になります。どちらか一方に寄せるか、プラグインが WooCommerce の出力を統合する設定になっているかを確認してください。
足りない項目をフィルターで追加する
WooCommerce には、構造化データの配列を書き換えるためのフィルターが用意されています。商品全体には woocommerce_structured_data_product、価格情報(Offer)には woocommerce_structured_data_product_offer を使います。どちらも第2引数に商品オブジェクト(WC_Product)が渡されます。
次の例は、商品属性「ブランド」(スラッグ pa_brand)からブランドを追加し、Offer に商品の状態と返品ポリシーを加えるものです。子テーマの functions.php か mu-plugin に追加します。作業前にバックアップを取り、ステージング環境で確認してから本番に反映してください。
<?php
// 商品属性 pa_brand の値を brand として追加する
add_filter( 'woocommerce_structured_data_product', function ( $markup, $product ) {
$brand = $product->get_attribute( 'pa_brand' );
if ( $brand && empty( $markup['brand'] ) ) {
$markup['brand'] = array(
'@type' => 'Brand',
'name' => wp_strip_all_tags( $brand ),
);
}
return $markup;
}, 10, 2 );
// Offer に商品の状態と返品ポリシーを追加する
// 値はストアの実際の返品条件に合わせて書き換えること
add_filter( 'woocommerce_structured_data_product_offer', function ( $offer, $product ) {
$offer['itemCondition'] = 'https://schema.org/NewCondition';
$offer['hasMerchantReturnPolicy'] = array(
'@type' => 'MerchantReturnPolicy',
'applicableCountry' => 'JP',
'returnPolicyCategory' => 'https://schema.org/MerchantReturnFiniteReturnWindow',
'merchantReturnDays' => 14,
'returnMethod' => 'https://schema.org/ReturnByMail',
'returnFees' => 'https://schema.org/FreeReturn',
);
return $offer;
}, 10, 2 );
書くときの注意点です。
- 構造化データの内容は、ページに表示されている内容と一致させます。返品条件をページや特定商取引法の表示に書いていないのに、構造化データにだけ書くのは避けます。
- 配送情報(
shippingDetails)も同じフィルターで追加できますが、配送料や日数が商品や地域で変わるストアでは、すべての商品に同じ値を入れると実態と食い違います。Google は、返品ポリシーや配送情報をサイト全体の Organization の構造化データや Merchant Center の設定で指定する方法も案内しているので、ストアの運用に合う方法を選んでください。 - WooCommerce の版によっては、GTIN などの商品識別子を入力する欄が商品編集画面に用意され、構造化データにも反映されます。自前で追加する前に、使っている版で既に出力されていないかを確認します。
バリエーション商品とレビューの扱い
色やサイズのバリエーションがある可変商品では、WooCommerce は価格の幅を AggregateOffer(最低価格と最高価格)で出力することがあります。これは商品スニペット向けには使えますが、販売者のリスティングでは、バリエーションごとの価格を示す形が求められます。Google は商品バリエーション向けの構造化データ(ProductGroup と hasVariant など)を案内しているので、可変商品の多いストアはそちらの対応状況も確認してください。対応しているプラグインもありますが、機能は版によって異なります。
評価(aggregateRating・review)は、実際の購入者や利用者のレビューに基づくものだけを出力します。作り話のレビューや、別サイトのレビューを転記して評価を水増しすることは、Google のガイドラインに反します。WooCommerce のレビュー機能を使っていれば、承認済みのレビューから評価が出力されます。
なお、WooCommerce を使わず、商品のレビュー記事を書いているサイトの場合は、Rank Math などの構造化データ機能で記事に Product と Review を付ける方法があります。この場合は「販売者のリスティング」ではなく「商品スニペット」が対象になります。
検証と公開後の確認
実装したら、次の順で確認します。
- リッチリザルト テスト:Google の表示の対象になる項目が検出されているか、エラーや警告がないかを確認します。
- Schema Markup Validator:schema.org の文法として正しいか、Google が対象にしていない項目も含めて構造を確かめます。
- Search Console:公開後、商品スニペットや販売者のリスティングに関するレポートで、エラーのある商品が無いかを見ます。レポートの名前や置き場所は変わることがあるので、「拡張」や「ショッピング」に関する項目を探してください。
- Merchant Center:利用している場合は、商品の診断画面で価格や在庫の不一致を指摘されていないかを確認します。
構造化データの価格と、ページに表示された価格・Merchant Center の価格がずれると、掲載が止まる原因になります。セールで価格を変えたときにページキャッシュが古い構造化データを出し続けていないかも確かめてください。
まとめ
- Google は Product の表示を「商品スニペット」と「販売者のリスティング」に分けており、必要な項目が違う
- ショッピング系の面に載せるなら、構造化データと Merchant Center の併用を考える
- WooCommerce は Product を標準で出力するので、リッチリザルト テストで中身と警告を先に確認する
- 足りない項目は
woocommerce_structured_data_productとwoocommerce_structured_data_product_offerで補い、表示内容と一致させる - 重複出力、バリエーション、レビューの出どころ、キャッシュによる価格ずれに注意する