2026年5月20日
2026年5月20日
WordPressのJSON-LDで構造化データを設定する方法
はじめに
構造化データ(JSON-LD)をWordPressに実装すると、Googleの検索結果にパンくずリスト・FAQアコーディオン・レビュー評価などのリッチリザルトが表示されるようになります。クリック率向上につながる重要なSEO施策です。
JSON-LDとは
JSON-LDは タグ内にJSONで構造化データを記述する形式で、Googleが推奨しています。microdata・RDFaと比べてHTMLを汚さず実装できます。
実装手順
ステップ1:記事(Article)の構造化データ
// functions.php
add_action('wp_head', function() {
if (!is_single()) return;
global $post;
$author = get_the_author_meta('display_name', $post->post_author);
$modified = get_the_modified_date('c', $post);
$published = get_the_date('c', $post);
$schema = [
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => get_the_title(),
'datePublished' => $published,
'dateModified' => $modified,
'author' => [
'@type' => 'Person',
'name' => $author,
],
'publisher' => [
'@type' => 'Organization',
'name' => get_bloginfo('name'),
],
];
if (has_post_thumbnail()) {
$img = wp_get_attachment_image_src(
get_post_thumbnail_id(), 'large'
);
$schema['image'] = $img[0];
}
echo '<script type="application/ld+json">'
. wp_json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
. '</script>' . "\n";
});
ステップ2:パンくずリスト(BreadcrumbList)
add_action('wp_head', function() {
if (!is_singular()) return;
$items = [
['@type' => 'ListItem', 'position' => 1,
'name' => 'ホーム', 'item' => home_url('/')],
];
$cats = get_the_category();
if ($cats) {
$items[] = [
'@type' => 'ListItem',
'position' => 2,
'name' => $cats[0]->name,
'item' => get_category_link($cats[0]->term_id),
];
}
$items[] = [
'@type' => 'ListItem',
'position' => count($items) + 1,
'name' => get_the_title(),
'item' => get_permalink(),
];
$schema = [
'@context' => 'https://schema.org',
'@type' => 'BreadcrumbList',
'itemListElement' => $items,
];
echo '<script type="application/ld+json">'
. wp_json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
. '</script>' . "\n";
});
ステップ3:FAQ(FAQPage)の構造化データ
// カスタムフィールドにFAQデータを保存している場合
add_action('wp_head', function() {
if (!is_single()) return;
$faqs = get_post_meta(get_the_ID(), '_faq_items', true);
if (!$faqs) return;
$entities = array_map(function($faq) {
return [
'@type' => 'Question',
'name' => $faq['question'],
'acceptedAnswer' => [
'@type' => 'Answer',
'text' => $faq['answer'],
],
];
}, $faqs);
$schema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => $entities,
];
echo '<script type="application/ld+json">'
. wp_json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
. '</script>' . "\n";
});
ステップ4:Google リッチリザルトテストで確認
実装後は Google の「リッチリザルトテスト」(search.google.com/test/rich-results)でURLを入力し、エラーなく構造化データが認識されているか確認します。
Yoast SEOプラグインを使う場合
Yoast SEOは自動でArticle・BreadcrumbListのJSON-LDを出力します。カスタム実装と重複しないよう、Yoast SEOを使う場合はfunctions.phpへの手動追加は不要です。
注意事項
- JSON-LDの内容は実際のページコンテンツと一致させる(虚偽情報はGoogleペナルティの対象)
wp_json_encode()を使うと特殊文字が安全にエスケープされます(json_encode()より推奨)- 構造化データはGoogleへのヒントであり、リッチリザルト表示を保証するものではありません
まとめ
JSON-LDはWordPressの wp_head フックでPHPから出力するのが最も柔軟な実装方法です。Article・BreadcrumbList・FAQPageの3種を実装するだけで、検索結果のクリック率が大幅に向上することが期待できます。