WP Manifestindependent plugin directory
manifest / seo / od-structured-data

OD Structured Data

Structured data support for WordPress.

by Koji Kuno · github.com/olein-jp/od-structured-data

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/olein-jp/od-structured-data/archive/refs/heads/main.zip

Declares an update source (https://github.com/Olein-jp/od-structured-data), so updates arrive through the plugin's own updater.

Readme

OD Structured Data

OD Structured Data は、WordPress の投稿・固定ページ・著者・画像・サイト情報をもとに、Schema.org 準拠の JSON-LD を生成する WordPress プラグインです。

完成済み JSON-LD を手入力して保存するのではなく、WordPress がすでに持っている情報を標準 API で解決し、必要な上書き値だけを投稿ごとに補う設計です。Article 系 Schema の管理、検証、プレビュー、フロントエンド出力に加え、出力ポリシー、サイト主体、診断、BreadcrumbList に対応しています。

主な機能

  • 設定画面で投稿タイプごとの出力方針を管理
  • ブロックエディターで投稿タイプ設定の継承、個別有効、個別無効を選択
  • Schema ノードごとの出力担当を設定
  • 新規コンテンツで構造化データをデフォルト有効化する設定
  • 既存コンテンツの一括有効化
  • ArticleBlogPosting の切り替え
  • 投稿タイトル、URL、公開日時、更新日時、著者、アイキャッチ画像、サイト名、サイト URL を自動取得
  • 見出し、説明文、画像、著者名の上書き
  • WordPress 標準のメディア選択 UI による画像上書き
  • PHP で生成した JSON-LD の編集画面プレビュー
  • エラー、推奨項目、整合性警告を編集画面に分類表示
  • 各プロパティの取得元、自動取得値、上書き値、最終出力値を表示
  • フロントエンドの wp_head から JSON-LD を出力
  • ArticleWebPageWebSite、サイト主体を含む @graph 出力
  • サイト主体として OrganizationPerson、出力なしを選択
  • サイト主体の名称、URL、ロゴ、sameAs を一元管理
  • WordPress の確定可能な階層から BreadcrumbList を生成
  • Yoast SEO、Rank Math、All in One SEO との重複出力可能性の警告
  • PHP フィルターによる対象投稿タイプ、Schema タイプ、生成データ、出力可否の拡張
  • GitHub Releases を使ったプラグイン更新配信

対応範囲

Article 系 Schema を中心に、サイト主体とパンくずを含む一貫した graph を生成します。

対応 Schema:

  • Article
  • BlogPosting
  • WebPage
  • WebSite
  • Organization

対応投稿タイプは初期状態では未選択です。設定 > OD Structured Data で投稿、固定ページ、公開カスタム投稿タイプから必要なものにチェックを入れると、対象の編集画面で構造化データ設定を利用できます。

対象投稿タイプは od_structured_data_post_types フィルターでも変更できます。

要件

プラグイン実行環境:

  • WordPress 6.8 以上
  • WordPress 7.1 まで検証済み
  • PHP 7.4 以上

WordPress の利用可能な下限は 6.8 です。互換性確認では、現在の最新安定版である WordPress 7.1 と、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

基本的な使い方

  1. WordPress 管理画面で OD Structured Data を有効化します。
  2. 設定 > OD Structured Data で、対応したい投稿タイプにチェックを入れて保存します。
  3. 新しく作成する投稿で最初から有効化したい場合は、「新規コンテンツでは構造化データをデフォルトで有効化する」にチェックを入れて保存します。
  4. 既存の投稿や固定ページもまとめて有効化したい場合は、同じ設定画面で「既存コンテンツを有効化」を実行します。
  5. 対象投稿タイプのブロックエディターを開きます。
  6. 投稿設定サイドバーの「構造化データ」パネルを開きます。
  7. 必要に応じて Schema タイプ、見出し、説明文、画像、著者名を上書きします。
  8. 検証結果と JSON-LD プレビューを確認します。
  9. 投稿を保存すると、フロントエンドの 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
  }
}

REST API

編集画面の 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_types
  • od_structured_data_allowed_article_types
  • od_structured_data_post_settings
  • od_structured_data_resolved_post_data
  • od_structured_data_article_schema
  • od_structured_data_graph
  • od_structured_data_should_render

詳しい引数と利用例は docs/hooks.md を参照してください。

SEO プラグインとの関係

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 run i18n         # POT・PO・MO・JavaScript用JSONを再生成
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 で環境を起動してください。

翻訳を更新する場合は、PHP・JavaScript の原文を変更した後に npm run i18n を実行します。POT と日本語 PO が更新され、PHP 用 MO と JavaScript 用 JSON が languages/ に生成されます。新しい原文を追加した場合は、PO の日本語訳を入力してから npm run i18n:monpm run i18n:json を再実行してください。

互換性確認時は .wp-env.jsoncore を一時的に WordPress/WordPress#6.8.6 などへ切り替え、npm run env:start の後に npm test を実行してください。通常の開発では core を固定せず、wp-env の既定の最新安定版で確認します。

リリース

GitHub Releases を使って、WordPress 管理画面からプラグイン更新を配信します。

  1. od-structured-data.php のプラグインヘッダーと OD_STRUCTURED_DATA_VERSION をリリースするバージョンに更新します。
  2. 1.2.3 のような *.*.* 形式のタグを作成して push します。
  3. GitHub Actions が Release を作成し、od-structured-data.zip を添付します。
  4. 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

Read the full README on GitHub →