エンティティ管理
Person(個人)/ Corporation(企業)/ Organization(組織)の 3 種類のエンティティを、独立した 3 テーブルで管理します。各タブで全フィールドを個別に登録・編集・削除できます。
本プラグインの管理画面は admin.php?page=kapm に配置され、上部のナビゲーションタブで 3 つのエンティティ種別を切り替えます。デフォルトは Person タブで、URL クエリ &tab=corporation / &tab=organization で切り替わります。エンティティはすべて独立したカスタムテーブルに保存され、WordPress ユーザーとは関連付きません。
管理画面の共通操作
WordPress 管理画面の左サイドバーから 「Kashiwazaki SEO Author Panel Manager」(dashicons-id-alt アイコン)をクリックします。
上部の Person / Corporation / Organization タブをクリックして、管理したいエンティティ種別を選択します。
一覧画面の 「新規追加」 ボタンから登録画面を開き、各フィールドを入力して保存します。既存エンティティは 「編集」 リンクから修正できます。
削除は一覧の 「削除」 リンクから行います。削除操作には JavaScript の confirm() ダイアログが表示され、さらにサーバー側で nonce 検証が行われます。

3 種のエンティティは別テーブルに保存されます({prefix}apm_persons / {prefix}apm_corporations / {prefix}apm_organizations)。テーブルはプラグイン有効化時に dbDelta() で作成され、インデックスは PRIMARY KEY (id) のみです。詳細な DB スキーマは トラブルシューティングの DB スキーマ表を参照してください。
Person(個人)タブ
Person タブは、記事の執筆者・レビュアー・編集者など「個人」を登録するためのタブです。ここで登録したエンティティはブロックエディタや [author_panel] ショートコードから Person の ID で参照され、Schema.org の Person 型 JSON-LD として出力されます。

Person の全フィールド(13 項目)
Person 登録フォーム(admin/views/person-form.php)の全フィールドと、対応する DB カラム・型・既定値・未入力時の挙動を以下にまとめます。
| UI 表示名 | 内部キー (POST / DB) |
DB 型 | 必須 | 既定値 | 入力形式 | 未入力時の挙動 |
|---|---|---|---|---|---|---|
| 名前 | name |
varchar(255) NOT NULL |
必須 | '' |
1 行テキスト | HTML の required 属性でブラウザ側バリデーション。サーバー側は sanitize_text_field() で無害化のみ。 |
| 英語名 | name_en |
varchar(255) NOT NULL |
任意 | '' |
1 行テキスト | 空の場合、JSON-LD の alternateName プロパティは出力されません。HTML パネルの (英語名) 表記も省略されます。 |
| Role | role |
varchar(255) NOT NULL |
任意 | 'Author' |
自由入力テキスト(ツールチップに推奨値一覧) | 本フィールドはセレクトではなく <input type="text"> です。未定義値は role_to_property() で author として扱われます(後述マッピング表参照)。 |
| 肩書き(Job Title) | job_title |
varchar(255) NOT NULL |
任意 | '' |
1 行テキスト | 空の場合、HTML パネルの肩書き行と JSON-LD の jobTitle プロパティは出力されません。 |
| 自己紹介(Bio) | bio |
text NOT NULL |
任意 | '' |
複数行テキスト(5 行表示) | 空の場合、HTML パネルの Bio 段落と JSON-LD の description は省略されます。サニタイズは sanitize_textarea_field()(改行は保持、HTML タグは除去)。 |
| 画像 | image_url |
varchar(2083) NOT NULL |
任意 | '' |
URL + メディアライブラリ選択ボタン | 空の場合、パネルの画像要素と JSON-LD の image(ImageObject)は出力されません。URL は esc_url_raw() で保存されます。 |
| URL | url |
varchar(2083) NOT NULL |
任意 | '' |
URL | 空の場合、名前がテキストのみ(リンクなし)になります。JSON-LD の url プロパティは省略され、@id 生成時のベース URL は home_url('/') にフォールバックします。 |
| sameAs URL | same_as |
text NOT NULL |
任意 | '' |
複数行テキスト(1 行 1 URL) | 保存時は 1 行ずつ esc_url_raw() で URL として無害化されます(v1.0.3 から。以前の sanitize_textarea_field() は %E6%9F%8F のようなパーセントエンコードを削除し、日本語を含む LinkedIn 等の URL を壊していました)。表示時は 1 行ずつ filter_var(FILTER_VALIDATE_URL) で検証され、通過したもののみ JSON-LD の sameAs 配列とフロントのアイコン表示に使われます。無効な行は静かにスキップされます。 |
| パネルのデザイン | panel_style |
varchar(50) NOT NULL |
任意 | 'default' |
select(4 値固定) | 未指定時は default。選択肢は default(標準)/accent(アクセント)/minimal(ミニマル)/card(カード)の 4 種で、形だけを決めます。後述「パネルのデザインとカラー」を参照。 |
| パネルのカラー | panel_color |
varchar(50) NOT NULL |
任意 | 'auto' |
select(8 値固定) | 未指定時は auto(おまかせ=デザインごとの標準配色)。custom を選ぶと下の 3 色が使われます。後述「パネルのデザインとカラー」を参照(v1.0.3 で追加)。 |
| 背景色 / 文字色 / アクセント色 | color_bgcolor_textcolor_accent |
varchar(7) NOT NULL |
任意 | '' |
カラーピッカー(WordPress 標準の wp-color-picker) |
カラーが「カスタム」のときだけ入力欄が表示され、使われます。sanitize_hex_color() で #rgb / #rrggbb 以外は空文字として保存されます。空の色は既定値(背景 #ffffff・文字 #333333・アクセント #0073aa)になります(v1.0.3 で追加)。 |
このほか、すべてのエンティティテーブルに id bigint(20) unsigned AUTO_INCREMENT(PRIMARY KEY)と created_at datetime DEFAULT CURRENT_TIMESTAMP が自動付与されます。ユーザーが入力するカラムではありません。
Person の Role フィールド推奨値
Role は自由入力テキストですが、ツールチップでは以下の 8 種類の値が推奨されています。ここに載っていない文字列を入れても保存は通りますが、Custom モードの JSON-LD 変換では未定義値として扱われます(既定の author にマップされる)。
| 推奨値 | 意味 | Custom モード時の Schema.org プロパティ |
|---|---|---|
Author(既定) | 記事の執筆者 | author |
Publisher | 記事の発行元・出版社 | publisher |
Editor | 記事の編集者 | editor |
Reviewer | 記事のレビュー・監修者 | reviewedBy |
Contributor | 寄稿者・協力者 | contributor |
Creator | コンテンツの作成者 | creator |
Sponsor | スポンサー・資金提供者 | sponsor |
Translator | 翻訳者 | translator |
Corporation(企業)タブ
Corporation タブは、記事の発行元や運営会社などの企業法人を登録するタブです。ここで登録したエンティティは Schema.org の Corporation 型として JSON-LD 出力されます。Corporation は Organization のサブタイプで、営利法人であることをより明示できます。

Corporation の基本フィールド(12 項目)
Corporation のフォーム(admin/views/corporation-form.php)は Person から job_title / bio / image_url を取り除き、description(説明)と logo_url(ロゴ画像)に置き換えた構成になっています。
このほか、住所・電話番号・メール・法人情報などの任意項目が 20 あります(v1.0.4 で追加)。住所・連絡先・法人情報を参照してください。
| UI 表示名 | 内部キー (POST / DB) |
DB 型 | 必須 | 既定値 | 入力形式 | 未入力時の挙動 |
|---|---|---|---|---|---|---|
| 名前 | name |
varchar(255) NOT NULL |
必須 | '' |
1 行テキスト | required によるブラウザバリデーション。JSON-LD の name プロパティへ出力されます。 |
| 英語名 | name_en |
varchar(255) NOT NULL |
任意 | '' |
1 行テキスト | 空の場合、JSON-LD の alternateName と HTML パネルの英語併記が省略されます。 |
| Role | role |
varchar(255) NOT NULL |
任意 | 'Publisher' |
自由入力テキスト | 既定は Publisher(Person と異なる点に注意)。Custom モード時、role_to_property() で Schema.org プロパティに変換されます。 |
| 説明(Description) | description |
text NOT NULL |
任意 | '' |
複数行テキスト(5 行表示) | 空の場合、HTML パネルの説明行と JSON-LD の description は出力されません。sanitize_textarea_field() で保存。 |
| URL | url |
varchar(2083) NOT NULL |
任意 | '' |
URL | 空の場合、名前はテキストのみ表示され、JSON-LD の url は省略されます。@id のベース URL は home_url('/')。 |
| ロゴ | logo_url |
varchar(2083) NOT NULL |
任意 | '' |
URL + メディアライブラリ選択ボタン | 空の場合、パネルのロゴ画像と JSON-LD の logo(ImageObject)は出力されません。 |
| sameAs URL | same_as |
text NOT NULL |
任意 | '' |
複数行テキスト(1 行 1 URL) | 保存時は 1 行ずつ esc_url_raw() で URL として無害化されます(v1.0.3 から。以前の sanitize_textarea_field() は %E6%9F%8F のようなパーセントエンコードを削除し、日本語を含む LinkedIn 等の URL を壊していました)。表示時は 1 行ずつ FILTER_VALIDATE_URL で検証し、通過行のみ JSON-LD の sameAs 配列へ出力されます。 |
| パネルのデザイン | panel_style |
varchar(50) NOT NULL |
任意 | 'default' |
select(4 値固定) | 選択肢は Person と共通(default/accent/minimal/card)。 |
| パネルのカラー | panel_color |
varchar(50) NOT NULL |
任意 | 'auto' |
select(8 値固定) | 未指定時は auto(おまかせ=デザインごとの標準配色)。custom を選ぶと下の 3 色が使われます。後述「パネルのデザインとカラー」を参照(v1.0.3 で追加)。 |
| 背景色 / 文字色 / アクセント色 | color_bgcolor_textcolor_accent |
varchar(7) NOT NULL |
任意 | '' |
カラーピッカー(WordPress 標準の wp-color-picker) |
カラーが「カスタム」のときだけ入力欄が表示され、使われます。sanitize_hex_color() で #rgb / #rrggbb 以外は空文字として保存されます。空の色は既定値(背景 #ffffff・文字 #333333・アクセント #0073aa)になります(v1.0.3 で追加)。 |
Corporation の Role フィールド推奨値
Corporation/Organization のツールチップでは、記事発行元という主な用途に合わせて 5 種類のみを推奨しています。Person と同様、未定義値は author にマップされます。
| 推奨値 | 意味 | Custom モード時の Schema.org プロパティ |
|---|---|---|
Publisher(既定) | 記事の発行元・出版社 | publisher |
Author | 記事の執筆者(法人名義の場合) | author |
Sponsor | スポンサー・資金提供者 | sponsor |
Creator | コンテンツの作成者 | creator |
Contributor | 寄稿者・協力者 | contributor |
Organization(組織)タブ
Organization タブは、研究機関・業界団体・非営利組織・運営メディアなど、Corporation 以外の組織を登録するためのタブです。Schema.org の Organization 型として JSON-LD 出力されます。

Organization の基本フィールド(12 項目)
Organization のフォーム(admin/views/organization-form.php)のカラム構成は Corporation と完全に同一ですが、独立した DB テーブル {prefix}apm_organizations に保存され、Schema.org の型も異なります。Corporation と混在させず、営利法人以外は必ず Organization タブで登録してください。
このほか、住所・電話番号・メール・法人情報などの任意項目が 20 あります(v1.0.4 で追加)。住所・連絡先・法人情報を参照してください。
| UI 表示名 | 内部キー (POST / DB) |
DB 型 | 必須 | 既定値 | 入力形式 | Schema.org での出力型 |
|---|---|---|---|---|---|---|
| 名前 | name |
varchar(255) NOT NULL |
必須 | '' |
1 行テキスト | Organization.name |
| 英語名 | name_en |
varchar(255) NOT NULL |
任意 | '' |
1 行テキスト | Organization.alternateName |
| Role | role |
varchar(255) NOT NULL |
任意 | 'Publisher' |
自由入力テキスト | Custom モード時に role_to_property() でプロパティ変換 |
| 説明(Description) | description |
text NOT NULL |
任意 | '' |
複数行テキスト | Organization.description |
| URL | url |
varchar(2083) NOT NULL |
任意 | '' |
URL | Organization.url |
| ロゴ | logo_url |
varchar(2083) NOT NULL |
任意 | '' |
URL + メディアライブラリ | Organization.logo(ImageObject) |
| sameAs URL | same_as |
text NOT NULL |
任意 | '' |
複数行テキスト(1 行 1 URL) | Organization.sameAs(配列)。保存時は 1 行ずつ esc_url_raw() で無害化(v1.0.3 から) |
| パネルのデザイン | panel_style |
varchar(50) NOT NULL |
任意 | 'default' |
select(4 値固定) | HTML パネルの CSS クラス .kapm-style-* に反映 |
| パネルのカラー | panel_color |
varchar(50) NOT NULL |
任意 | 'auto' |
select(8 値固定) | HTML パネルの CSS クラス .kapm-color-* に反映 |
| 背景色 / 文字色 / アクセント色 | color_bgcolor_textcolor_accent |
varchar(7) NOT NULL |
任意 | '' |
カラーピッカー | カラーが「カスタム」のときだけ、カードの style 属性に CSS 変数として出力 |
一般的な営利企業(株式会社・合同会社等)は Corporation、学会・研究所・NPO・業界団体・運営メディア(ブランド名)などは Organization に登録してください。両者はテーブルも @id の接頭辞(#corporation-{id} / #organization-{id})も分かれており、JSON-LD 上では別エンティティとして扱われます。
住所・連絡先・法人情報(Corporation / Organization 共通)
Corporation と Organization の編集画面には、基本の項目の下に「住所・電話番号」「メール・問い合わせ窓口」「法人情報」の 3 つのまとまりがあります(v1.0.4 で追加)。どれも任意で、空欄の項目は出力しません。入力した項目はすべて構造化データ(JSON-LD)に出力します。パネルでは、住所と電話番号を説明文の下に表示し、入力した項目の一覧を名前の横の i ボタンの吹き出しに表示します。Person にはこの項目はありません。

項目一覧(20 項目)
DB の列はすべて varchar(255) NOT NULL、既定値は '' です。
| UI 表示名 | 内部キー (POST / DB) |
JSON-LD のプロパティ | パネル | 入力のきまり |
|---|---|---|---|---|
| 郵便番号 | postal_code |
address.postalCode |
説明文の下・吹き出し | 自由入力(例: 100-0001) |
| 都道府県 | address_region |
address.addressRegion |
説明文の下・吹き出し | 自由入力 |
| 市区町村 | address_locality |
address.addressLocality |
説明文の下・吹き出し | 自由入力 |
| 番地・建物名 | street_address |
address.streetAddress |
説明文の下・吹き出し | 自由入力 |
| 国コード | address_country |
address.addressCountry |
―(住所の書き方の切り替えに使用) | ISO 3166-1 の英字 2 文字。小文字は大文字に直して保存します。未入力の場合、入力欄には JP が入った状態で表示されます |
| 電話番号 | telephone |
telephone |
説明文の下(tel: リンク)・吹き出し |
自由入力。国番号と市外局番を含める書き方(例: +81-3-1234-5678)を推奨 |
| メールアドレス | email |
email |
吹き出し | メールアドレスの形式(sanitize_email() で確認) |
| 問い合わせ窓口の種類 | contact_type |
contactPoint.contactType |
吹き出し | 自由入力(例: Customer Service) |
| 問い合わせ窓口の電話番号 | contact_telephone |
contactPoint.telephone |
吹き出し | 自由入力 |
| 問い合わせ窓口のメールアドレス | contact_email |
contactPoint.email |
吹き出し | メールアドレスの形式 |
| 正式名称(登記上の名称) | legal_name |
legalName |
吹き出し | 自由入力。「名前」と異なる場合に入力 |
| 設立日 | founding_date |
foundingDate |
吹き出し | YYYY-MM-DD / YYYY-MM / YYYY。実在しない日付は不可 |
| 従業員数 | number_of_employees |
numberOfEmployees(QuantitativeValue) |
吹き出し | 人数(50)か範囲(100-999)。全角数字・カンマ・「〜」も受け付け、半角に直して保存 |
| 税務上の識別番号(taxID) | tax_id |
taxID |
吹き出し | 自由入力(例: 法人番号 13 桁) |
| VAT 登録番号(vatID) | vat_id |
vatID |
吹き出し | 自由入力 |
| ISO 6523 コード | iso6523_code |
iso6523Code |
吹き出し | 自由入力。識別体系の番号(ICD)、コロン、ID の順(例: 0199:724500PMK2A2M1SQQ228) |
| DUNS 番号 | duns |
duns |
吹き出し | 自由入力 |
| LEI コード | lei_code |
leiCode |
吹き出し | 自由入力 |
| GLN(GS1 Global Location Number) | global_location_number |
globalLocationNumber |
吹き出し | 自由入力 |
| NAICS コード | naics |
naics |
吹き出し | 自由入力 |
出力のきまり
- 住所(
address)は、郵便番号・都道府県・市区町村・番地・建物名のどれか 1 つでも入っているときだけ出力します。国コードだけでは出力しません(国コードには既定でJPが入るため)。 - 問い合わせ窓口(
contactPoint)は、窓口の電話番号かメールアドレスがあるときだけ出力します。窓口の種類だけでは出力しません。 - 従業員数は、人数なら
value、範囲ならminValue/maxValueで出力します。 - 書式が決まっている項目(国コード・メールアドレス・設立日・従業員数)に合わない値を入れて保存すると、その項目は空欄で保存され、画面上部に「「〇〇」は書式が正しくないため、空欄として保存しました。」と表示されます。国コード・メールアドレス・設立日は、保存する前にブラウザも書式を確認します。
パネルでの表示

住所は、地図ピンのアイコン付きで 1 行にまとめて表示します。国コードが JP か空欄なら「〒郵便番号 都道府県市区町村番地・建物名」、それ以外の国なら「番地, 市区町村, 州 郵便番号」の順です。電話番号は受話器のアイコン付きで、入力したとおりの文字で表示し、タップすると電話をかけられるリンク(tel:)にします。アイコンには読み上げ用の名前(「住所」「電話番号」)が付いています。
名前の横の吹き出し(i ボタン)

住所・連絡先・法人情報のどれかが入力されていると、名前の横に i ボタン(dashicons-info-outline)が付きます。ボタンにマウスを乗せるか、タップするか、キーボードで移動すると、入力した項目の「項目名」と「内容」の一覧が吹き出しで出ます。国コードしか入っていない場合(既定の JP だけの場合)は、ボタンは出ません。
- 並びは入力画面と同じです。住所は 1 行にまとめ、設立日は「2012年6月26日」、従業員数は「50人」「100〜999人」の形で表示します。国コードは住所の書き方の切り替えにだけ使い、一覧には出しません。
- 吹き出しは、名前の行のすぐ下に、パネルの情報欄(名前・説明文の列)の幅いっぱいで出します。i ボタンの位置に合わせないので、名前が長くても画面からはみ出しません。画面幅が 600px 以下のときは、項目名と内容を縦に並べます。
- 吹き出しは
role="tooltip"で、ボタンからaria-describedbyで参照しています。Esc キーで閉じられます。この Esc の処理だけは小さなスクリプト(ハンドルkapm-panel-info、フッターにインライン出力)で行い、吹き出しのあるパネルを出したページにだけ読み込みます。表示自体は CSS だけで行います。
JSON-LD の出力例
すべての項目を入力した Corporation の出力(整形済み、ほかの項目は省略):
{
"@type": "Corporation",
"@id": "https://example.com/#corporation-2",
"name": "株式会社サンプル",
"url": "https://example.com/",
"legalName": "Sample Kabushiki Kaisha",
"email": "info@example.com",
"telephone": "+81-3-1234-5678",
"address": {
"@type": "PostalAddress",
"streetAddress": "千代田1-1 サンプルビル5F",
"addressLocality": "千代田区",
"addressRegion": "東京都",
"postalCode": "100-0001",
"addressCountry": "JP"
},
"contactPoint": {
"@type": "ContactPoint",
"contactType": "Customer Service",
"telephone": "+81-3-1234-0000",
"email": "support@example.com"
},
"foundingDate": "2012-06-26",
"numberOfEmployees": {
"@type": "QuantitativeValue",
"minValue": 100,
"maxValue": 999
},
"taxID": "1234567890123",
"vatID": "T1234567890123",
"iso6523Code": "0199:724500PMK2A2M1SQQ228",
"duns": "123456789",
"leiCode": "724500PMK2A2M1SQQ228",
"globalLocationNumber": "4512345678906",
"naics": "541810"
}
項目と書式は、Google 検索セントラルの Organization の構造化データに合わせています。同ページによると必須の項目はなく、当てはまる項目をできるだけ入れることが勧められています。また、組織の情報はホームページか組織を説明する 1 ページに置くことを勧めており、すべてのページに入れる必要はないとしています。ネットショップ向けの返品・配送・会員プログラム(hasMerchantReturnPolicy など)は、このプラグインの対象外です。
Role から Schema.org プロパティへの変換(role_to_property)
Custom モード(他プラグインの既存スキーマに著者情報を紐付ける出力方式)では、各エンティティの role フィールド値が class-shortcode.php の role_to_property() メソッドで Schema.org のプロパティ名に変換され、対象ノードに付与されます。対応表は以下のとおりです(大文字小文字は区別されません)。
| 入力 role 値(小文字化後) | 出力プロパティ名 |
|---|---|
author / writer | author |
publisher | publisher |
editor | editor |
reviewer | reviewedBy |
contributor | contributor |
creator | creator |
sponsor / funder | sponsor |
translator | translator |
| 上記以外(未定義値・空文字) | author(フォールバック) |
Standard モード(ページ本文の直後に独立 JSON-LD を出力する方式)では、@graph に Person / Corporation / Organization ノードを並べるだけで、Article 等への紐付けは行いません。そのため role_to_property() はショートコードの mode="custom" 時にのみ使われます。
パネルのデザインとカラー
各エンティティの HTML パネルの見た目は、「パネルのデザイン」(形)と「パネルのカラー」(色)の 2 項目で決まります。v1.0.2 までは 1 つの「パネルデザイン」に形と色(Dark)が混在していましたが、v1.0.3 で 2 項目に分けました。形と色を別々に選べるため、たとえば「カードの形でダーク」のような組み合わせも選べます。CSS は public/css/panel-style.css に定義されており、表示に JavaScript は使用しません。
パネルのデザイン(panel_style)— 形
| 管理画面の表示名 | value | CSS クラス | 形 |
|---|---|---|---|
| 標準(枠線) | default(既定) | .kapm-style-default | 背景あり、細い枠線、角丸 6px |
| アクセント(左に太線) | accent | .kapm-style-accent | 枠線なし、左端に 4px のアクセント色の線、角丸なし。ラベルもアクセント色 |
| ミニマル(下線のみ) | minimal | .kapm-style-minimal | 枠線・角丸なし、下線のみ。カラーを指定したときは左右にも余白が付きます |
| カード(影付き) | card | .kapm-style-card | 枠線なし、10px 角丸、シャドウ 0 2px 12px rgba(0,0,0,.08)。ラベルはアクセント色の大文字表記 |
パネルのカラー(panel_color)— 色
| 管理画面の表示名 | value | 配色 |
|---|---|---|
| おまかせ(デザインに合わせる) | auto(既定) | デザインごとの標準配色。標準=背景 #f9f9f9・枠線 #e0e0e0、アクセント/カード=白背景、ミニマル=背景なし・下線 #eee。アクセント色は #0073aa。v1.0.2 までの見た目と同じです |
| グレー | gray | 背景 #f9f9f9・枠線 #e0e0e0(どのデザインでも同じ配色) |
| 白 | white | 背景 #ffffff |
| ダーク | dark | 背景 #2b2d42・枠線 #5c6080・アクセント #8ecae6・白系の文字。背景に対し全テキスト 4.5:1 以上(WCAG AA) |
| ブルー | blue | 背景 #eef5fb・枠線 #c5dcef・アクセント #0a5b8c |
| グリーン | green | 背景 #eff7f0・枠線 #c7e3cc・アクセント #2d6a35 |
| オレンジ | orange | 背景 #fff6eb・枠線 #f3d2a8・アクセント #a3540a |
| カスタム(色を指定) | custom | 背景色・文字色・アクセント色の 3 色を自分で指定します。枠線や補助の文字色は、背景色と文字色を混ぜて自動で作られます |
明るい配色(おまかせ・グレー・白・ブルー・グリーン・オレンジ)では、名前のリンク色はテーマの設定に従います。ダークとカスタムでは、背景に対して読めるよう、名前の色もパネル側で指定します(ダーク=白、カスタム=文字色)。
カスタムカラーの指定
「パネルのカラー」で カスタム(色を指定) を選ぶと、その下に 背景色・文字色・アクセント色 の 3 つのカラーピッカーが表示されます(ほかのカラーを選んでいる間は非表示)。指定した色は、カードの style 属性に CSS 変数(--kapm-bg / --kapm-text / --kapm-name / --kapm-accent)として出力されます。
- 背景色:パネルの背景
- 文字色:名前・肩書き・紹介文などの文字。名前の色にも使われます
- アクセント色:アクセント(左の太線)やカードのラベル、SNS アイコンにマウスを重ねたときの色
空のままにした色は既定値(背景 #ffffff・文字 #333333・アクセント #0073aa)になります。文字が読みにくくならないよう、背景色と文字色の明るさに十分な差をつけてください。
以前の保存値 panel_style = dark は、v1.0.3 では デザイン=標準・カラー=ダーク として読み替えて表示されます(データの書き換えは不要)。編集画面を開くと、この組み合わせが選ばれた状態で表示されます。以前の Dark にあった左の太線が必要な場合は、デザインを「アクセント(左に太線)」に変えてください。
デザインとカラーは エンティティごとに保存されます。同じ記事に Person と Corporation を並べて、それぞれ異なるデザイン・カラーを適用することもできます。画像の形(丸・四角・楕円など)は記事ごとにブロックで選びます(ショートコード&ブロック参照)。
使用中の記事の確認
Person / Corporation / Organization の 編集画面下部に「使用中の記事」セクションが表示されます。そのエンティティを参照している投稿を自動検出して一覧表示する機能で、削除前の影響範囲確認に使えます。
実装は KAPM_Database::get_posts_using_entity() にあり、2 段階で記事を絞り込みます。
SQL LIKE で候補を抽出:wp_posts.post_content に "persons":" / "corporations":" / "organizations":" の文字列パターンを含む行を LIKE 検索します。post_status = 'publish' に限定されるため、下書き・非公開・予約投稿・ゴミ箱は検出されません。
parse_blocks() で再帰的に照合:候補記事ごとに parse_blocks() を実行し、block_tree_contains_entity() が innerBlocks を再帰的に辿ります。Group / Columns / Row / Reusable など ネストされたコンテナブロック内に配置された kapm/author-panel も検出対象です(v1.0.1 で追加)。
この逆引きは Gutenberg ブロック経由の参照のみを対象とします。ショートコード [author_panel persons="..."] で参照している場合、ブロック属性の JSON 形式とはパターンが一致しないため 検出されません。また、公開済み(publish)以外の投稿ステータスも対象外です。ネストブロック(Group / Columns 等)内の著者パネルは v1.0.1 以降で検出されます。
エンティティを削除する前に、必ず「使用中の記事」セクションを確認してください。削除された ID を参照しているブロックはフロント側で「表示するエンティティ無し」として空出力になります(エラー表示ではなく、パネル自体が消える)。
保存・削除処理のセキュリティ
3 つのエンティティすべてに対して、保存と削除のたびに nonce 検証と capability チェックが行われます。具体的なアクション名は以下のとおりです。
| 操作 | nonce アクション名 | nonce フィールド名 |
|---|---|---|
| Person 保存 | kapm_save_person | kapm_person_nonce |
| Person 削除 | kapm_delete_person | URL の _wpnonce |
| Corporation 保存 | kapm_save_corporation | kapm_corporation_nonce |
| Corporation 削除 | kapm_delete_corporation | URL の _wpnonce |
| Organization 保存 | kapm_save_organization | kapm_organization_nonce |
| Organization 削除 | kapm_delete_organization | URL の _wpnonce |
管理画面の表示と保存・削除は current_user_can('manage_options')(管理者権限)でガードされています。REST API は編集者以上(edit_posts)で参照可能です。詳細は トラブルシューティングの REST API 仕様を参照してください。
アンインストール時のデータ削除
WordPress 管理画面でプラグインを 削除すると、uninstall.php が実行され {prefix}apm_persons / {prefix}apm_corporations / {prefix}apm_organizations の 3 テーブルが DROP TABLE IF EXISTS により完全に消去され、テーブル構造のバージョンを記録するオプション kapm_db_version も削除されます。無効化(deactivate)では削除されませんが、削除(delete)は復元不可です。エンティティデータを保全する場合は事前に wp db export 等で必ずバックアップを取ってください。