2026年5月28日

2026年5月28日

WordPressにOrganizationスキーマ(JSON-LD)を設定する方法|コード例と確認手順

Organizationスキーマは、サイトを運営する会社や団体の名前、URL、ロゴ、連絡先などを検索エンジンに伝える構造化データです。Schema.org の Organization 型を JSON-LD で書き、ページの HTML に埋め込みます。この記事では、WordPress でトップページに Organization の JSON-LD を出力するコードと、出力を確認する手順を説明します。

Google のドキュメントによると、Organization の構造化データは、ナレッジパネルなどに表示するロゴや組織の詳細を Google が判断する材料になります。マークアップを追加しても、検索結果に特定の表示が出ることは保証されません。

先に確認すること:すでに出力されていないか

Yoast SEO、Rank Math、All in One SEO などの SEO プラグインや一部のテーマは、設定に応じて Organization(または個人サイト向けの Person)の構造化データを出力します。同じ組織の情報を別々のコードで二重に出すと、内容が食い違ったときに意図しない情報が使われるおそれがあります。

まず、トップページの HTML に Organization がすでに含まれていないかを確認します。

curl -s https://example.com/ | grep -o '"@type":"Organization"' | head

何か出力された場合は、その SEO プラグインやテーマの設定で組織名やロゴを入力する方法を優先してください。何も出力されず、プラグインを追加したくない場合に、次の手順で自分で出力します。なお、JSON の書き方によっては "@type": "Organization" のように空白が入るため、表示されないときはブラウザで「ページのソースを表示」し、application/ld+json を検索して確かめてください。

Organizationスキーマに書く主な項目

Google の Organization のドキュメント(2026年10月時点)では、必須のプロパティはなく、組織に当てはまるものを追加するよう案内されています。よく使う項目は次のとおりです。

プロパティ 内容 例
name 組織の名前 株式会社サンプル
url 組織の公式サイトの URL https://example.com/
logo ロゴ画像の URL https://example.com/wp-content/uploads/logo.png
sameAs SNS など、組織について書かれた他サイトの URL(複数可) 公式の X、Facebook のページ
telephone / email 代表の電話番号・メールアドレス +81-3-0000-0000
address 所在地(PostalAddress 型) 郵便番号、都道府県、市区町村、番地
contactPoint 問い合わせ窓口(ContactPoint 型) サポート窓口の電話番号
legalName 登記上の正式名称 株式会社サンプル

ロゴ画像は、112×112 ピクセル以上で、Google がクロールしてインデックスできる URL に置き、Google 画像検索が対応する形式にする必要があります。白い背景の上で見やすい画像にするよう案内されています。

マークアップを置く場所は、トップページか、会社概要のような組織を説明する1ページで足ります。すべてのページに出す必要はありません。

WordPressに出力するコード

テーマの functions.php に書くと、テーマを更新したり切り替えたりしたときに消えます。テーマに依存しない mu-plugins(Must-Use プラグイン)として置くのが扱いやすい方法です。wp-content/mu-plugins/ に置いた PHP ファイルは、有効化の操作をしなくても自動で読み込まれます。

# mu-plugins ディレクトリが無ければ作る(パスはサイトに合わせる)
mkdir -p /var/www/html/wp-content/mu-plugins
nano /var/www/html/wp-content/mu-plugins/organization-schema.php

ファイルの中身は次のとおりです。組織名や URL は自分のものに書き換えてください。

<?php
/**
 * Plugin Name: Organization Schema
 * Description: トップページに Organization の JSON-LD を出力する
 */

add_action( 'wp_head', function () {
	// トップページだけに出力する
	if ( ! is_front_page() ) {
		return;
	}

	// カスタマイザーで設定したサイトロゴがあれば、その画像の URL を使う
	$logo_id  = get_theme_mod( 'custom_logo' );
	$logo_url = $logo_id ? wp_get_attachment_image_url( $logo_id, 'full' ) : '';

	$data = array(
		'@context'  => 'https://schema.org',
		'@type'     => 'Organization',
		'name'      => '株式会社サンプル',
		'legalName' => '株式会社サンプル',
		'url'       => home_url( '/' ),
		'telephone' => '+81-3-0000-0000',
		'address'   => array(
			'@type'           => 'PostalAddress',
			'postalCode'      => '100-0001',
			'addressRegion'   => '東京都',
			'addressLocality' => '千代田区',
			'streetAddress'   => '千代田1-1-1',
			'addressCountry'  => 'JP',
		),
		'contactPoint' => array(
			'@type'       => 'ContactPoint',
			'telephone'   => '+81-3-0000-0000',
			'contactType' => 'customer support',
		),
		'sameAs' => array(
			'https://x.com/example',
			'https://www.facebook.com/example',
		),
	);

	if ( $logo_url ) {
		$data['logo'] = $logo_url;
	}

	echo '<script type="application/ld+json">'
		. wp_json_encode( $data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_HEX_TAG )
		. '</script>' . "\n";
} );

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

  • 配列を作ってから wp_json_encode() で JSON に変換しています。JSON を文字列で手書きすると、引用符やカンマの抜けで壊れやすいためです。PHP のオブジェクトに ->@type のように書くことはできない(構文エラーになる)ので、@type は配列のキーとして書きます。
  • JSON_UNESCAPED_UNICODE で日本語を \u 形式にせずそのまま出力し、JSON_HEX_TAG で値に含まれる < > をエスケープして、</script> による埋め込みの崩れを防ぎます。
  • サイトロゴを使っていない場合は、$logo_url の行を削除し、'logo' => 'https://example.com/wp-content/uploads/logo.png' のように URL を直接書いてください。
  • 使わない項目(住所を公開しない、SNS が無いなど)は配列から削除します。空の値を残す必要はありません。
  • 住所や電話番号は、サイトの会社概要ページなどに表示している内容と一致させます。

保存したら、ファイルの文法エラーがないかを確認します。

php -l /var/www/html/wp-content/mu-plugins/organization-schema.php

No syntax errors detected と表示されれば文法は正しい状態です。mu-plugins のファイルに文法エラーがあると、サイト全体が表示されなくなるため、サーバー上で直接編集する場合は特に確認してください。

出力を確認する

HTMLに出ているかを見る

トップページを開き、ページのソースに application/ld+json と Organization が含まれているかを確認します。キャッシュ系プラグインやサーバーのキャッシュを使っている場合は、先にキャッシュを削除してください。

curl -s https://example.com/ | grep -o '<script type="application/ld+json">[^<]*' | head -c 1000

Googleのツールで検証する

以前の「構造化データ テストツール」は提供が終わり、2026年10月時点では次の2つが使われています。

  • リッチリザルト テスト:Google 検索で使われる構造化データとして読み取れるか、重大なエラーがないかを確認できます。
  • Schema Markup Validator:Schema.org の仕様に沿っているかを、Google の機能に限らず確認できます。

公開後は、Search Console の URL 検査ツールで、Google がそのページをどう認識しているかを確認できます。

うまくいかないときの確認点

  • 出力されない:トップページに「固定ページ」を設定している場合も is_front_page() は真になります。それでも出ない場合は、テーマのヘッダーテンプレートで wp_head() が呼ばれているかを確認してください。
  • ロゴが入らない:「外観」→「カスタマイズ」の「サイト基本情報」でロゴを設定していないと、custom_logo は空です。ブロックテーマでサイトロゴブロックから設定したロゴも、get_theme_mod( 'custom_logo' ) で取得できます。
  • Organization が2つ出る:SEO プラグインやテーマの出力と重なっています。どちらか一方に統一してください。
  • 画面が真っ白になった:mu-plugins のファイルを FTP や SSH で削除するか名前を変えると、元に戻ります。

まとめ

  • 先に、SEO プラグインやテーマが Organization をすでに出力していないかを確認する。出力していればその設定を使う
  • 自分で出力する場合は、mu-plugins に PHP ファイルを置き、配列を wp_json_encode() で JSON-LD にしてトップページだけに出す
  • 必須の項目はなく、name url logo sameAs など当てはまるものを入れる。ロゴは112×112ピクセル以上
  • 確認はリッチリザルト テストと Schema Markup Validator で行う

関連記事:

お気軽にご相談ください

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