2026年8月24日

2026年8月24日

WordPressでFAQスキーマを実装する方法と、リッチリザルトが表示される条件

WordPress で FAQ スキーマ(FAQPage の構造化データ)を実装する方法は、SEO プラグインの FAQ ブロックを使うか、子テーマで JSON-LD を出力するかの2通りです。ただし、Google は 2023年8月から FAQ のリッチリザルトを「政府機関や健康分野などの、よく知られた権威あるサイト」に限って表示する方針に変えており、一般的な企業サイトやブログでは、マークアップしても検索結果に FAQ の折りたたみ表示は基本的に出ません。この記事では、その前提を踏まえて、それでも FAQ スキーマを実装する意味があるのか、実装するならどう書くか、何を確認すべきかを説明します。

FAQ リッチリザルトの現状

以前は、FAQPage の構造化データを入れると、検索結果の下に質問と回答が折りたたみで表示されることがあり、表示面積を広げる施策として多くのサイトが導入しました。その結果、本来の FAQ ではない宣伝文やページ内容と関係の薄い Q&A にまでマークアップが使われるようになり、Google は検索結果を簡潔にする目的で表示対象を絞り込みました。

現在の扱いは次のとおりです(2026年10月現在、Google 検索セントラルの説明に基づく)。

  • FAQ のリッチリザルトは、権威ある政府系・健康系サイトなど一部に限って表示される
  • それ以外のサイトでは、構造化データが正しくても FAQ のリッチリザルトは表示されない
  • 既存の FAQPage マークアップを急いで削除する必要はなく、残していても悪影響はないとされている

表示対象の範囲は今後も変わる可能性があります。導入や見直しの際は、Search Central の FAQ 構造化データのページで最新の記載を確認してください。

それでも実装する意味はあるか

一般的なサイトにとって、FAQ スキーマは「入れれば検索結果の見た目が変わる施策」ではなくなりました。実装の意味として残るのは次のような点です。

  • ページの中に質問と回答のまとまりがあることを、機械が読める形で明示できる
  • Google 以外の検索エンジンやサービスが構造化データを利用する場合に備えられる
  • すでに入っているマークアップを正しい状態に保ち、エラーを出さないようにできる

逆に、FAQ スキーマを入れるために、記事の内容と関係の薄い Q&A を後から付け足すのは避けてください。読者にとって役立たない FAQ は、マークアップの有無にかかわらず記事の質を下げます。FAQ セクションは「この記事を読んだ人が次に疑問に思うこと」に答える形で書き、その結果として構造化データを付ける、という順番が健全です。

実装前に押さえておく Google のガイドライン

FAQPage を使うときは、Google の構造化データに関する一般的なガイドラインと FAQ 固有のガイドラインに沿う必要があります。主な点は次のとおりです。

  • 質問と回答の両方をサイト運営者が書いていること。利用者が回答を投稿する形式(Q&A 掲示板など)は FAQPage ではなく QAPage の対象
  • 構造化データに書いた質問と回答の全文が、ページ上で読者に見える形で掲載されていること
  • 広告や宣伝を目的とした内容に使わないこと
  • 同じ FAQ を複数のページに載せている場合は、マークアップするのは1か所だけにすること

特に「ページに見えている内容と構造化データの内容を一致させる」は、プラグインでも手書きでも崩れやすい点です。回答を本文で修正したのに JSON-LD 側が古いまま、という状態にならない仕組みを選びます。

方法1:SEO プラグインの FAQ ブロックを使う

Yoast SEO や Rank Math を使っているなら、それぞれが提供する FAQ 用のブロックを使うのが手軽です。ブロックエディターで FAQ ブロックを追加し、質問と回答を入力すると、本文への表示と FAQPage の構造化データ出力がまとめて行われるため、表示と構造化データのずれが起きにくいのが利点です。

注意点は、プラグインを乗り換えたときにブロックが使えなくなり、内容の移し替えが必要になることです。また、テーマ側にも独自の FAQ 機能や構造化データ出力がある場合、同じ FAQ が二重にマークアップされることがあります。どちらか一方だけが出力するように設定を見直してください。ブロック名や設定項目はプラグインのバージョンによって変わるため、導入時に各プラグインの説明を確認します。

方法2:コアの「詳細」ブロックから JSON-LD を生成する

プラグインに依存したくない場合は、WordPress コアの「詳細」ブロック(core/details)で FAQ を書き、その内容から JSON-LD を組み立てる方法があります。見出し部分(summary)を質問、中身を回答とみなすので、本文を編集すれば構造化データも自動で追従します。

作業前にバックアップを取り、子テーマの functions.php(またはサイト固有のプラグイン)に追加してください。

<?php
// 投稿内のトップレベルの「詳細」ブロックから FAQPage の JSON-LD を出力する
add_action( 'wp_head', function () {
	if ( ! is_singular( 'post' ) ) {
		return;
	}
	$post = get_queried_object();
	if ( ! $post instanceof WP_Post || ! has_block( 'core/details', $post ) ) {
		return;
	}

	$items = array();
	foreach ( parse_blocks( $post->post_content ) as $block ) {
		if ( 'core/details' !== $block['blockName'] ) {
			continue;
		}
		if ( ! preg_match( '#<summary[^>]*>(.*?)</summary>#s', $block['innerHTML'], $m ) ) {
			continue;
		}
		$question = trim( html_entity_decode( wp_strip_all_tags( $m[1] ), ENT_QUOTES, 'UTF-8' ) );

		$answer_html = '';
		foreach ( $block['innerBlocks'] as $inner ) {
			$answer_html .= render_block( $inner );
		}
		$answer = trim( html_entity_decode( wp_strip_all_tags( $answer_html ), ENT_QUOTES, 'UTF-8' ) );

		if ( '' === $question || '' === $answer ) {
			continue;
		}
		$items[] = array(
			'@type'          => 'Question',
			'name'           => $question,
			'acceptedAnswer' => array(
				'@type' => 'Answer',
				'text'  => $answer,
			),
		);
	}

	if ( empty( $items ) ) {
		return;
	}
	$data = array(
		'@context'   => 'https://schema.org',
		'@type'      => 'FAQPage',
		'mainEntity' => $items,
	);
	echo '<script type="application/ld+json">' . wp_json_encode( $data, JSON_UNESCAPED_UNICODE | JSON_HEX_TAG ) . "</script>\n";
} );

このコードのポイントと限界は次のとおりです。

  • 回答はタグを取り除いたテキストにしています。HTML を含めることも仕様上は可能ですが、テキストにしておくほうが不正なマークアップを出すおそれが少なくなります
  • JSON_HEX_TAG を付けて < と > をエスケープし、本文中の文字列が script タグを閉じてしまう事故を防いでいます
  • グループブロックなどの中に入れた詳細ブロックは対象外です。FAQ はトップレベルに並べて書く前提です
  • 記事中に FAQ 以外の目的で詳細ブロックを使う場合は、その内容も質問として拾われます。その場合は、FAQ 用の詳細ブロックに独自のクラス名を付け、$block['attrs']['className'] で絞り込むように改造してください

SEO プラグインの FAQ ブロックと併用すると二重出力になるため、どちらか一方に統一します。

実装後の確認方法

公開またはプレビューした URL を、Google の「リッチリザルト テスト」と、schema.org が提供する「Schema Markup Validator」の両方で確認します。

  • Schema Markup Validator で、FAQPage と Question・Answer が構文として正しく読み取れているか
  • リッチリザルト テストで、FAQ に関するエラーや警告が出ていないか
  • ページのソースを開き、FAQPage の JSON-LD が1つだけ出力されているか

リッチリザルト テストで問題なしと判定されても、前述の表示対象に入らないサイトでは検索結果に FAQ は表示されません。テスト結果は「構造化データとして正しいか」の確認であって、表示されることの保証ではない点を理解しておいてください。Search Console の拡張機能まわりのレポートも、表示の有無や名称が変わることがあるため、エラーの検出に使う補助と考えるのが現実的です。

まとめ

  • FAQ のリッチリザルトは 2023年8月以降、権威ある政府系・健康系サイトなどに限って表示され、一般のサイトでは基本的に表示されない
  • 既存の FAQPage マークアップは残してよいが、表示目当てに関係の薄い Q&A を足すのは避ける
  • 実装は SEO プラグインの FAQ ブロックか、子テーマで本文から JSON-LD を生成する方法が、表示と構造化データのずれを防ぎやすい
  • 回答はページ上に見える形で載せ、同じ FAQ のマークアップは1ページだけにする
  • テストツールの合格は構文の正しさの確認であり、検索結果への表示を約束するものではない

お気軽にご相談ください

お見積りへ お問い合わせへ
▲