OD Structured Data は、WordPress の投稿・固定ページ・著者・画像・サイト情報をもとに、Schema.org 準拠の JSON-LD を生成する WordPress プラグインです。
完成済み JSON-LD を手入力して保存するのではなく、WordPress がすでに持っている情報を標準 API で解決し、必要な上書き値だけを投稿ごとに補う設計です。初期リリースでは Article 系 Schema の管理、検証、プレビュー、フロントエンド出力に対応しています。
- 設定画面で選択した投稿タイプに構造化データ設定を追加
- ブロックエディターの投稿設定パネルから投稿単位で有効化
- 新規コンテンツで構造化データをデフォルト有効化する設定
- 既存コンテンツの一括有効化
ArticleとBlogPostingの切り替え- 投稿タイトル、URL、公開日時、更新日時、著者、アイキャッチ画像、サイト名、サイト URL を自動取得
- 見出し、説明文、画像、著者名の上書き
- WordPress 標準のメディア選択 UI による画像上書き
- PHP で生成した JSON-LD の編集画面プレビュー
- PHP 側の検証結果を編集画面に表示
- フロントエンドの
wp_headから JSON-LD を出力 Article、WebPage、WebSite、Organizationを含む@graph出力- Yoast SEO、Rank Math、All in One SEO との重複出力可能性の警告
- PHP フィルターによる対象投稿タイプ、Schema タイプ、生成データ、出力可否の拡張
- GitHub Releases を使ったプラグイン更新配信
初期リリースでは Article 系 Schema に絞っています。
対応 Schema:
ArticleBlogPostingWebPageWebSiteOrganization
対応投稿タイプは初期状態では未選択です。設定 > OD Structured Data で投稿、固定ページ、公開カスタム投稿タイプから必要なものにチェックを入れると、対象の編集画面で構造化データ設定を利用できます。
対象投稿タイプは od_structured_data_post_types フィルターでも変更できます。
プラグイン実行環境:
- WordPress 6.8 以上
- WordPress 7.0.2 まで検証済み
- PHP 7.4 以上
WordPress の利用可能な下限は 6.8 です。互換性確認では、現在の最新安定版である WordPress 7.0.2 と、6.8 系の最新パッチ版である WordPress 6.8.6 で npm test が通ることを確認しています。
開発環境:
- Node.js 20 以上
- npm 10 以上
- Composer 2
- Docker Desktop または
@wordpress/envが利用できる Docker runtime
GitHub Release から od-structured-data.zip をダウンロードし、WordPress 管理画面の「プラグイン > 新規追加 > プラグインのアップロード」からインストールしてください。
このリポジトリを直接配置する場合は、プラグインディレクトリ名を od-structured-data にしてください。
composer install --no-dev --prefer-dist --optimize-autoloader- WordPress 管理画面で OD Structured Data を有効化します。
設定 > OD Structured Dataで、対応したい投稿タイプにチェックを入れて保存します。- 新しく作成する投稿で最初から有効化したい場合は、「新規コンテンツでは構造化データをデフォルトで有効化する」にチェックを入れて保存します。
- 既存の投稿や固定ページもまとめて有効化したい場合は、同じ設定画面で「既存コンテンツを有効化」を実行します。
- 対象投稿タイプのブロックエディターを開きます。
- 投稿設定サイドバーの「構造化データ」パネルを開きます。
- 必要に応じて Schema タイプ、見出し、説明文、画像、著者名を上書きします。
- 検証結果と JSON-LD プレビューを確認します。
- 投稿を保存すると、フロントエンドの
wp_headに JSON-LD が出力されます。
詳しい使い方は docs/usage.md を参照してください。
投稿ごとの設定は _od_structured_data という投稿メタに保存されます。保存するのは完成済み JSON-LD ではなく、出力有効状態、Schema タイプ、上書き値、機能フラグだけです。
{
"enabled": true,
"schemaType": "BlogPosting",
"overrides": {
"headline": "",
"description": "",
"imageId": 0,
"authorName": ""
},
"features": {
"article": true,
"faqFromBlocks": false
}
}編集画面の JSON-LD プレビューは、保存前の投稿メタ相当設定をサーバー側へ送り、PHP の実生成結果を表示します。
Endpoint:
POST /wp-json/od-structured-data/v1/preview
リクエストには対象投稿の postId と _od_structured_data 相当の settings を含めます。対象投稿を編集できないユーザーは利用できません。
詳細は docs/usage.md を参照してください。
このプラグインは、対象投稿タイプ、許可 Schema タイプ、解決済み投稿データ、Article schema、JSON-LD graph、出力可否をフィルターで拡張できます。
主なフィルター:
od_structured_data_post_typesod_structured_data_allowed_article_typesod_structured_data_post_settingsod_structured_data_resolved_post_dataod_structured_data_article_schemaod_structured_data_graphod_structured_data_should_render
詳しい引数と利用例は docs/hooks.md を参照してください。
OD Structured Data は、他の SEO プラグインが出力する JSON-LD を勝手に削除・停止しません。Yoast SEO、Rank Math、All in One SEO が有効な場合は、編集画面に重複出力の可能性を警告します。
重複を避けたい場合は、投稿ごとの出力設定、または od_structured_data_should_render フィルターで出力可否を制御してください。
npm install
composer install
npm run env:startローカル WordPress の URL は wp-env の出力を確認してください。
初期ログイン情報:
- Username:
admin - Password:
password
npm run env:start # WordPress 環境を起動
npm run env:stop # WordPress 環境を停止
npm run env:destroy # WordPress コンテナと volume を削除
npm run env:logs # wp-env のログを表示
npm run wp -- --info # WP-CLI を実行
npm test # PHPUnit と smoke test を実行
npm run test:php # PHP unit / integration test を実行
npm run test:smoke # WordPress からプラグインを認識できるか確認PHPUnit は wp-env に同梱された WordPress テストライブラリを使用します。先に npm run env:start で環境を起動してください。
互換性確認時は .wp-env.json の core を一時的に WordPress/WordPress#6.8.6 などへ切り替え、npm run env:start の後に npm test を実行してください。通常の開発では core を固定せず、wp-env の既定の最新安定版で確認します。
GitHub Releases を使って、WordPress 管理画面からプラグイン更新を配信します。
od-structured-data.phpのプラグインヘッダーとOD_STRUCTURED_DATA_VERSIONをリリースするバージョンに更新します。1.2.3のような*.*.*形式のタグを作成して push します。- GitHub Actions が Release を作成し、
od-structured-data.zipを添付します。 - WordPress 管理画面のプラグイン更新は、最新の GitHub Release を参照します。
.
├── assets/
│ ├── editor.css
│ └── editor.js
├── docs/
│ ├── README.md
│ ├── hooks.md
│ ├── plugin-design-spec.md
│ └── usage.md
├── includes/
│ ├── class-article-schema.php
│ ├── class-editor-assets.php
│ ├── class-graph-builder.php
│ ├── class-json-ld-renderer.php
│ ├── class-preview-rest-controller.php
│ ├── class-plugin.php
│ ├── class-plugin-settings.php
│ ├── class-post-meta-registrar.php
│ ├── class-post-resolver.php
│ └── ...
├── tests/
├── od-structured-data.php
├── package.json
└── README.md
GPL-2.0-or-later