WordPress関数一覧まとめ【Part2】プラグイン開発者向け完全ガイド|設定画面・管理メニュー・メタボックス・権限

WordPress関数一覧まとめ【Part2】プラグイン開発者向け完全ガイド|設定画面・管理メニュー・メタボックス・権限 WordPress
この記事は約65分で読めます。
  1. 1. プラグイン開発の基本構造|フックとファイル配置
    1. add_action()|特定のタイミングで処理を実行する
    2. 主要フックポイント一覧
    3. remove_action() / remove_filter()|フックを解除する
  2. 2. 有効化・無効化フック|activation hooks
    1. register_activation_hook()|有効化時に1回だけ実行
    2. register_deactivation_hook()|無効化時に1回だけ実行
  3. 3. 設定値の保存|Options API
    1. Options API 関数一覧
    2. データ保存先の使い分け
  4. 4. 設定画面を正攻法で作る|Settings API
    1. register_setting()|設定項目を登録する
    2. add_settings_section()|設定をグループ分けする
    3. add_settings_field()|入力フィールドを追加する
    4. 設定フォームの出力|settings_fields / do_settings_sections / submit_button
  5. 5. 管理メニュー|add_menu_page / add_submenu_page
    1. add_menu_page()|トップレベルメニューを追加
    2. add_submenu_page()|既存メニューの下に追加
    3. メニュー位置の目安
  6. 6. 投稿編集画面の拡張|メタボックスとPost Meta
    1. add_meta_box()|入力エリアを追加する
    2. save_postフック|保存処理の黄金パターン
    3. Post Meta 関連関数
  7. 7. カスタム投稿タイプとタクソノミー
    1. register_post_type()|カスタム投稿タイプを登録
    2. register_taxonomy()|カスタムタクソノミーを登録
    3. flush_rewrite_rules()|404エラーを防ぐリライトルール更新
  8. 8. 管理画面のCSS/JS読み込み|admin_enqueue_scripts
  9. 9. 権限とロール|capability設計
    1. current_user_can()|権限チェックの基本
    2. よく使うケイパビリティ一覧
  10. 10. admin_post_|フォーム送信の受け口
  11. 11. WP_List_Table|投稿一覧風のテーブルUIを作る
  12. 12. 独自アップデート機能|WordPress.org非公開プラグインの自動更新
  13. 13. $wpdb深掘り|安全なSQL・独自テーブル設計
    1. $wpdb->prepare()|SQLインジェクション対策の基本
    2. dbDelta()|独自テーブルの作成・更新
  14. 14. プラグインファイルのパス・URL関数
  15. 15. nonceフォーム処理|wp_nonce_field / check_admin_referer
    1. wp_nonce_field()|フォームにnonceを埋め込む
    2. check_admin_referer()|管理画面フォームの検証
    3. wp_verify_nonce()|戻り値で判定したい場合
  16. 16. User Meta API|ユーザーごとのデータ保存
    1. User Meta 関数一覧
  17. 17. ユーザー取得|get_users / WP_User_Query
    1. get_users()|ユーザー一覧を配列で取得
    2. WP_User_Query|ページネーション対応の高度なクエリ
    3. get_user_by()|IDやメールから特定ユーザーを取得
  18. 18. 管理画面通知|admin_notices / add_settings_error
    1. admin_notices フック|管理画面に通知を表示する
    2. add_settings_error() / get_settings_errors()|Settings API連携通知
  19. 19. ロール・ケイパビリティ管理|add_role / get_role
    1. add_role()|独自ロールを追加する
    2. get_role()|既存ロールにケイパビリティを追加/削除する
  20. 20. メール送信|wp_mail
    1. wp_mail()|基本的な送信
    2. HTMLメールの送信
    3. wp_mail_failed フィルター|送信失敗の詳細を取得
  21. 21. Object Cache|wp_cache_get / wp_cache_set
  22. 22. URLリダイレクト・操作|wp_redirect / add_query_arg
    1. wp_redirect() / wp_safe_redirect()|ページ遷移
    2. add_query_arg()|URLにパラメータを付加する
    3. remove_query_arg()|URLからパラメータを削除する
  23. 23. メディアアップロード|wp_handle_upload / wp_insert_attachment
    1. wp_handle_upload()|ファイルを安全に受け取る
    2. wp_insert_attachment()|メディアライブラリに登録する
    3. media_handle_upload()|アップロードとライブラリ登録を一発で行う
  24. 24. タクソノミーCRUD|wp_insert_term / get_terms / term_exists
    1. wp_insert_term()|タームを追加する
    2. get_terms()|タームの一覧を取得する
    3. wp_update_term() / wp_delete_term()|更新・削除
  25. 25. ダッシュボードウィジェット・プラグインアクションリンク
    1. wp_add_dashboard_widget()|ダッシュボードにウィジェットを追加
    2. plugin_action_links_{plugin_file}|プラグイン一覧に「設定」リンクを追加
    3. plugin_row_meta|プラグイン一覧の説明文下にリンクを追加
  26. まとめ:プラグイン開発で守るべき5つの原則

この記事でわかること

  • プラグイン開発で使う関数を25カテゴリ・フック設計からメディアアップロードまで体系的に解説
  • 「動けばOK」から脱却:Settings APIによるnonce・サニタイズ・権限の自動処理
  • メタボックスの保存処理「黄金パターン」(nonce検証→権限チェック→サニタイズ→保存)を完全習得
  • User Meta・Object Cache・wp_mail・タクソノミーCRUDなど、解説書に載りにくい実装パターンも収録
  • WordPress.org非公開プラグインへの自動更新機能の実装方法まで収録

プラグイン開発は、ひと言でいえば「WordPressのルールに沿って機能を拡張する」仕事です。しかし「動けばOK」で組んでしまうと、後から必ず問題が発生します。

プラグインには「どのテーマでも正しく動く」「管理画面から設定変更できる」「他プラグインとの競合に耐える」「セキュリティ対策が必須」という要件があります。つまりプラグインは長期運用を前提としたソフトウェアなのです。

この記事はWordPress関数解説シリーズのPart2(プラグイン開発編)です。テーマ制作関数はPart1、Ajax・REST API・セキュリティ設計はPart3で解説しています。

💡 実例として参照:この記事で解説する内容は、私が開発したRapls PDF Image CreatorThanks Mail for StripeRapls AI Chatbotでも実際に使用しています。Settings API、メタボックス、権限チェックなど、実践的な実装例として参考にしてください。

1. プラグイン開発の基本構造|フックとファイル配置

結論:WordPressプラグインの設計は「どのフックで何をするか」を最初に決めることから始まります。コードを書く前にフックマップを整理する習慣をつけるだけで、後から「どこに何を書けばいいかわからない」という迷子状態を防げます。

WordPressでは「何かしたい」=「どこかのフックで処理を登録する」という考え方が基本です。プラグインは必ずフックを通じてWordPressの動作に介入します。

プラグインファイルの冒頭には必ずプラグインヘッダーコメントを記述します。これがないとWordPressはプラグインとして認識しません。

Text Domainは翻訳ファイルの識別子です。WordPress.orgでプラグインを公開する場合、translate.wordpress.orgで翻訳を管理できます。詳しくは「自作WordPressプラグインでPTEを取るまでの実体験」をご覧ください。

add_action()|特定のタイミングで処理を実行する

WordPressは処理の各段階でアクションフックと呼ばれるタイミングポイントを提供しています。add_action()でそのタイミングに自分の処理を挿入します。

第3引数の$priorityは実行順序を制御します。数値が小さいほど早く実行されます(デフォルト:10)。

主要フックポイント一覧

フック名 発火タイミング 主な用途
plugins_loaded 全プラグイン読み込み後 他プラグイン依存の処理
init WordPress初期化完了後 CPT・ショートコード登録
admin_init 管理画面の初期化 Settings API登録
admin_menu 管理メニュー構築時 メニュー項目の追加
wp_enqueue_scripts フロントCS/JS読み込み時 スタイル・スクリプト登録
admin_enqueue_scripts 管理画面CS/JS読み込み時 管理画面用アセット登録
save_post 投稿保存時 メタボックスデータの保存

remove_action() / remove_filter()|フックを解除する

他のプラグインやテーマが登録した処理を無効化したい場合に使います。解除には登録時と同じコールバック関数名・同じ優先度の指定が必要です。無名関数(クロージャ)で登録された処理は解除できません。

2. 有効化・無効化フック|activation hooks

結論:ユーザーデータの削除を無効化フックで行うのは絶対に避けてください。「プラグインを無効化したらデータが全部消えた」はユーザーの信頼を一瞬で失います。データ削除はアンインストール時のみ、無効化時はcronの解除と一時キャッシュのクリアだけに留めてください。

register_activation_hook()|有効化時に1回だけ実行

プラグインを有効化したとき(または更新後に再有効化したとき)に実行されます。初期オプション設定・独自テーブル作成・リライトルールのフラッシュなどに使います。

register_deactivation_hook()|無効化時に1回だけ実行

タイミング ✅ やること ❌ やってはいけないこと
無効化時 cronジョブの解除、一時キャッシュのクリア ユーザーデータの削除
アンインストール時 オプション・テーブルなどのデータ削除

アンインストール時のデータ削除はuninstall.phpを用意するか、register_uninstall_hook()で登録します。

3. 設定値の保存|Options API

結論:Options APIはプラグインの設定保存の基本手段ですが、「なんでもoptionsに入れる」のは禁物です。投稿ごとのデータはPost Meta、頻繁に変わる一時データはTransients、大量データは独自テーブルと使い分けることで、データベース負荷を抑えられます。

Options APIはwp_optionsテーブルにキーと値のペアを保存します。サイト全体に関わる設定値の管理に使います。

Options API 関数一覧

関数 動作 使いどころ
get_option( $key, $default ) 値を取得(なければデフォルト) 設定の読み込みに常用
add_option( $key, $value ) 存在しない場合のみ作成 有効化時の初期値設定
update_option( $key, $value ) 上書き(なければ作成) 設定画面からの保存
delete_option( $key ) 削除 アンインストール時のクリーンアップ

データ保存先の使い分け

データの種類 推奨保存先
サイト全体の設定値 Options API(wp_options)
投稿ごとのデータ Post Meta(postmeta)
ユーザーごとのデータ User Meta(usermeta)
有効期限付きキャッシュ Transients API
大量・複雑な構造データ 独自テーブル($wpdb)

4. 設定画面を正攻法で作る|Settings API

結論:$_POSTを直接受け取ってupdate_option()で保存するコードは書かないでください。Settings APIを使えば、nonce検証・権限チェック・サニタイズコールバックがすべて自動化され、セキュリティ対策の書き忘れがなくなります。

Settings APIの3層構造

Settings APIを使うメリットを整理します。

メリット 詳細
nonce検証が自動 CSRF攻撃を自動防御
サニタイズが確実 コールバックに全入力値を通せる
権限チェックが自動 不正アクセスを自動拒否
UIが統一される WordPress標準の設定画面デザイン

register_setting()|設定項目を登録する

Settings APIの核です。sanitize_callbackを必ず設定してください。ユーザーの入力値はすべてこのコールバックを通過してからデータベースに保存されます。

add_settings_section()|設定をグループ分けする

設定項目が多い場合にセクションで区切ります。コールバックで説明文を出力できます。

add_settings_field()|入力フィールドを追加する

設定フォームの出力|settings_fields / do_settings_sections / submit_button

formactionoptions.phpであることに注目してください。WordPressのoptions.phpが保存処理を引き受け、nonce検証・権限チェック・サニタイズコールバックを自動実行してくれます。

5. 管理メニュー|add_menu_page / add_submenu_page

結論:独立したメニューを追加するかWordPress標準の「設定」に追加するかは、プラグインの規模で判断します。設定項目が1〜2個なら「設定」サブメニューへの追加で十分で、大きなメニューを増やしすぎると管理画面が使いにくくなります。

add_menu_page()|トップレベルメニューを追加

add_submenu_page()|既存メニューの下に追加

メニュー位置の目安

位置(数値) 表示位置
2 ダッシュボードの下
20 固定ページの下
60 「外観」の下
65 「プラグイン」の下
80 「設定」の下(推奨)

6. 投稿編集画面の拡張|メタボックスとPost Meta

結論:メタボックスの保存処理では「nonce検証→権限チェック→サニタイズ→保存」の4ステップを必ず守ってください。この黄金パターンのうち1つでも省略すると、セキュリティホールになります。特にnonce検証の省略はCSRF攻撃への無防備な入口になります。

投稿ごとに保存したいデータは、オプションではなくPost Meta(カスタムフィールド)で管理します。

メタボックス保存処理の黄金パターン(4ステップ)

add_meta_box()|入力エリアを追加する

save_postフック|保存処理の黄金パターン

Post Meta 関連関数

関数 動作
get_post_meta( $id, $key, $single ) メタ値を取得($single=trueで単一値)
update_post_meta( $id, $key, $value ) 更新(なければ作成)
add_post_meta( $id, $key, $value, $unique ) 追加($unique=trueで重複防止)
delete_post_meta( $id, $key ) 削除

キー名の先頭にアンダースコア(_)を付けると、標準のカスタムフィールドUIに表示されなくなります。プラグイン専用フィールドには_myplugin_のようなプレフィックスを付けることで、他プラグインとの衝突も防げます。

7. カスタム投稿タイプとタクソノミー

結論:カスタム投稿タイプはテーマではなくプラグインで登録してください。テーマで登録すると、テーマを変更したときにCPTが消えてコンテンツにアクセスできなくなります。データ構造はテーマに依存させないことが長期運用の原則です。

register_post_type()|カスタム投稿タイプを登録

register_taxonomy()|カスタムタクソノミーを登録

flush_rewrite_rules()|404エラーを防ぐリライトルール更新

CPTを登録するとパーマリンク構造が変わりますが、リライトルールのキャッシュが残っているため、そのままでは404エラーになります。有効化時に1回だけflush_rewrite_rules()を実行してください。毎リクエストで実行するのは絶対に避けてください(データベースへの重い処理のため)。

8. 管理画面のCSS/JS読み込み|admin_enqueue_scripts

結論:管理画面用のCSS/JSは$hook_suffixで条件分岐し、自分のページでのみ読み込んでください。全管理画面でアセットを読み込むプラグインは「重いプラグイン」の烙印を押される最大の原因です。

$hook_suffixの形式はメニュー構造によって変わります。

メニュー種別 $hook_suffixの形式
トップレベルメニュー toplevel_page_{menu_slug}
サブメニュー {parent_slug}_page_{menu_slug}

不明な場合はvar_dump( $hook_suffix )で確認してください。

9. 権限とロール|capability設計

結論:「誰がこの機能を使えるべきか?」をコードを書く前に決めてください。権限の粒度が細かすぎると複雑になり、粗すぎると権限昇格のリスクが生まれます。Settings API経由の操作にはmanage_options、投稿の操作にはedit_postsが標準的な判断基準です。

current_user_can()|権限チェックの基本

よく使うケイパビリティ一覧

ケイパビリティ 使用場面 最低ロール
manage_options プラグイン設定画面 管理者
edit_posts 投稿の編集 投稿者以上
edit_post 特定の投稿の編集(IDを第2引数で指定) 投稿者以上
upload_files ファイルのアップロード 投稿者以上
edit_users ユーザーの編集 管理者

10. admin_post_|フォーム送信の受け口

結論:CSVエクスポートやファイルダウンロードなど、Settings APIでは対応できない処理はadmin_post_{action}フックを使います。処理完了後は必ずwp_safe_redirect()でリダイレクトしてください。リダイレクトしないと同じフォームの二重送信が発生します。

11. WP_List_Table|投稿一覧風のテーブルUIを作る

結論:WP_List_Tableは公式の公開APIとして保証されていませんが、実務では広く使われています。WordPressの管理画面と統一されたUI(ソート・ページネーション・一括操作)を短期間で実装できるため、現実的な選択肢です。バージョンアップで挙動が変わる可能性があることだけ念頭に置いてください。

12. 独自アップデート機能|WordPress.org非公開プラグインの自動更新

結論:WordPress.org以外で配布する有料プラグインなどに自動更新を実装するには、pre_set_site_transient_update_pluginsフィルターを使います。自前サーバーから最新バージョン情報を取得し、update情報に追加するだけで、標準のWordPress更新UIから更新できるようになります。

13. $wpdb深掘り|安全なSQL・独自テーブル設計

結論:ユーザー入力を含むSQLは必ず$wpdb->prepare()を使ってください。プレースホルダを使わずに変数を直接文字列結合してSQLを組み立てるコードは、SQLインジェクション攻撃への完全な無防備状態です。Options APIやMeta APIで対応できない大量・複雑なデータを扱う場合にのみ$wpdbを使います。

$wpdb->prepare()|SQLインジェクション対策の基本

プレースホルダ 使用例
%d 整数(decimal) post_id, user_id など
%s 文字列(string) meta_key, status など
%f 浮動小数点数(float) 価格、評価スコアなど

dbDelta()|独自テーブルの作成・更新

プラグイン有効化時にテーブルを作成します。dbDelta()は既存テーブルとの差分を確認し、必要なカラム追加だけを行うため、アップデート時の実行も安全です。

14. プラグインファイルのパス・URL関数

結論:プラグインのファイルパスやURLを取得するには、plugin_dir_path()とplugin_dir_url()を必ず使ってください。絶対パスをハードコードすると、サーバー移転やサブディレクトリ構成への変更で一斉に壊れます。

プラグイン開発で最も頻繁に使うパス関数を整理します。

関数 返す値 末尾スラッシュ
plugin_dir_path( __FILE__ ) プラグインのフルパス(サーバー絶対パス) あり
plugin_dir_url( __FILE__ ) プラグインのURL あり
plugins_url( $path, __FILE__ ) サブパスを含んだURL なし
plugin_basename( __FILE__ ) myplugin/myplugin.php 形式の相対パス なし

15. nonceフォーム処理|wp_nonce_field / check_admin_referer

結論:Ajax以外の通常フォーム(管理画面のカスタムフォームなど)でも、nonceによるCSRF対策は必須です。wp_nonce_field()でフォームにhiddenフィールドを埋め込み、処理側でcheck_admin_referer()で検証するセットを必ず使ってください。

Part3ではAjax向けのcheck_ajax_referer()を解説しています。ここでは管理画面の通常フォーム向けのnonceパターンを解説します。

wp_nonce_field()|フォームにnonceを埋め込む

wp_nonce_field()<input type="hidden">タグを2つ出力します。1つがnonceトークン、もう1つがリファラー用の_wp_http_refererです。

check_admin_referer()|管理画面フォームの検証

検証失敗時は自動的にwp_die()を呼び出して処理を終了します。check_ajax_referer()の管理画面フォーム版です。

wp_verify_nonce()|戻り値で判定したい場合

wp_die()を使わずに自前でエラー処理をしたい場合はwp_verify_nonce()を直接使います。成功時は1(有効期限内の前半)または2(後半)を返し、失敗時はfalseを返します。

16. User Meta API|ユーザーごとのデータ保存

結論:ユーザーごとに保存したいデータ(お気に入り、設定、プロファイル追加情報など)はUser Metaで管理します。Options APIに保存すると「Aさんの設定がBさんに影響する」という最悪のバグが起きます。ユーザーに紐づくデータは必ずUser Metaを使ってください。

User Meta 関数一覧

関数 動作
get_user_meta( $user_id, $key, $single ) メタ値を取得($single=trueで単一値)
update_user_meta( $user_id, $key, $value ) 更新(なければ作成)
add_user_meta( $user_id, $key, $value, $unique ) 追加($unique=trueで重複防止)
delete_user_meta( $user_id, $key ) 削除

17. ユーザー取得|get_users / WP_User_Query

結論:get_users()は引数にargsを渡すだけで柔軟なユーザー絞り込みができます。大量ユーザーを扱う場合やページネーションが必要な場合はWP_User_Queryを使いますが、単純な取得ならget_users()で十分です。

get_users()|ユーザー一覧を配列で取得

WP_User_Query|ページネーション対応の高度なクエリ

get_user_by()|IDやメールから特定ユーザーを取得

18. 管理画面通知|admin_notices / add_settings_error

結論:プラグインのユーザーへのフィードバックはadmin_noticesフックで出力します。Settings API経由の設定保存ならadd_settings_error()を使うと通知表示まで自動化できます。どちらの方法でも出力するHTMLはesc_html()でエスケープを忘れないでください。

admin_notices フック|管理画面に通知を表示する

WordPressの管理画面には4種類の通知スタイルがあります。

CSSクラス 用途 表示色
notice-success 保存完了など成功時
notice-error エラー発生時
notice-warning 注意・警告
notice-info 情報・案内

add_settings_error() / get_settings_errors()|Settings API連携通知

Settings API経由の設定画面では、add_settings_error()を使うとsettings_errors()の出力位置で自動的に表示されます。

19. ロール・ケイパビリティ管理|add_role / get_role

結論:独自ロールの追加はadd_role()で行いますが、毎リクエストで実行するのは絶対に避けてください。データベースに書き込む重い処理のため、プラグインの有効化時に1回だけ実行し、無効化時にremove_role()で削除するのが正しいパターンです。

add_role()|独自ロールを追加する

get_role()|既存ロールにケイパビリティを追加/削除する

既存ロール(投稿者・編集者など)に独自機能のケイパビリティを追加したい場合に使います。こちらも有効化時に1回だけ実行してください。

20. メール送信|wp_mail

結論:WordPressからメールを送る場合は必ずwp_mail()を使ってください。PHPのmail()を直接呼ぶと、WordPress側のメール設定(SMTPプラグインなど)が無視され、迷惑メールフォルダに入りやすくなります。wp_mail()はフィルターフックで差し込まれるSMTPプラグインとも自動的に連携します。

wp_mail()|基本的な送信

HTMLメールの送信

wp_mail_failed フィルター|送信失敗の詳細を取得

21. Object Cache|wp_cache_get / wp_cache_set

結論:TransientsはDBに保存する「永続キャッシュ」ですが、Object Cacheはリクエスト中のみ有効なメモリキャッシュです。Redis・Memcachedが導入されている環境ではTransientsの読み書きもObject Cacheが引き受けるため自動で高速化されます。ループ内で同じDBクエリを繰り返している場合はwp_cache_get/setでリクエスト単位のキャッシュを検討してください。

関数 動作 有効期間
wp_cache_get( $key, $group ) キャッシュを取得(なければfalse) リクエスト中(外部キャッシュ有効時はそれに依存)
wp_cache_set( $key, $data, $group, $expire ) キャッシュを保存 $expire秒(0=リクエスト終了まで)
wp_cache_delete( $key, $group ) キャッシュを削除 即時
wp_cache_flush() 全キャッシュをクリア 即時

22. URLリダイレクト・操作|wp_redirect / add_query_arg

結論:管理画面内のリダイレクトにはwp_safe_redirect()を使ってください。wp_redirect()はURLを検証しないため、オープンリダイレクト攻撃の踏み台になり得ます。wp_safe_redirect()は同じサイトか許可リストのURLのみに制限するため、管理画面フォームの送信後リダイレクトには必ずこちらを使います。

wp_safe_redirect vs wp_redirect

wp_redirect() / wp_safe_redirect()|ページ遷移

add_query_arg()|URLにパラメータを付加する

URLにGETパラメータを追加/変更します。URLを文字列で直接組み立てるより安全で可読性が高くなります。

remove_query_arg()|URLからパラメータを削除する

23. メディアアップロード|wp_handle_upload / wp_insert_attachment

結論:プラグインでファイルアップロードを実装する場合、move_uploaded_file()を直接使ってはいけません。wp_handle_upload()を使うことで、ファイルタイプの検証・サイズチェック・保存先の決定・セキュリティチェックが一括して行われます。

wp_handle_upload()|ファイルを安全に受け取る

wp_insert_attachment()|メディアライブラリに登録する

アップロードしたファイルをWordPressのメディアライブラリに登録します。登録することでサムネイル自動生成などの恩恵を受けられます。

media_handle_upload()|アップロードとライブラリ登録を一発で行う

wp_handle_upload()wp_insert_attachment()を組み合わせた処理をまとめて行います。画像を投稿に添付してメディアライブラリに登録するケースに最適です。

24. タクソノミーCRUD|wp_insert_term / get_terms / term_exists

結論:タームを追加する前にterm_exists()で重複確認をしてください。確認なしにwp_insert_term()を呼ぶと、同名タームが複数生成されてアーカイブページが重複表示される原因になります。

wp_insert_term()|タームを追加する

get_terms()|タームの一覧を取得する

wp_update_term() / wp_delete_term()|更新・削除

25. ダッシュボードウィジェット・プラグインアクションリンク

結論:プラグインの設定ページへの導線は、プラグイン一覧の「設定」リンクとして追加するのが最もユーザーに親切な方法です。plugin_action_links_{plugin_file}フィルターを使えば、WordPress標準のUIに自然に溶け込んだリンクを追加できます。

プラグイン一覧の表示箇所と対応フィルター

wp_add_dashboard_widget()|ダッシュボードにウィジェットを追加

WordPressのダッシュボード(管理画面トップ)に独自のウィジェットを追加します。統計情報やクイックステータスの表示に使います。

plugin_action_links_{plugin_file}|プラグイン一覧に「設定」リンクを追加

プラグイン一覧ページの「有効化 | 削除」の横に独自リンクを追加します。ユーザーが設定ページを見つけやすくなるため、設定画面があるプラグインには必ず実装してください。

plugin_row_meta|プラグイン一覧の説明文下にリンクを追加

プラグイン一覧の説明文の下に表示されるメタリンク(作者・バージョン等の横)に独自リンクを追加します。サポートフォーラムやレビューページへの誘導に使います。

まとめ:プラグイン開発で守るべき5つの原則

この記事では、プラグイン開発者が使うWordPress関数を25カテゴリにわたって解説しました。実務で役立てられるよう、最重要ポイントを整理します。

原則 要点
✅ フック設計を先に決める 「どのフックで何をするか」をコードを書く前にマップする
✅ Settings APIを使う nonce・権限・サニタイズを自動化し、$_POST直受けを避ける
✅ 保存処理の黄金パターン nonce検証→権限チェック→サニタイズ→保存の4ステップを必ず守る
✅ データ保存先の使い分け 設定=Options、投稿ごと=PostMeta、一時=Transients、大量=独自テーブル
✅ CPTはプラグインで登録 テーマ変更でデータが消えない構造にする

次回のPart3では、Ajax・REST API・外部API連携・Transientsキャッシュ戦略・WP-Cronについて詳しく解説します。

コメント

タイトルとURLをコピーしました