TrustBrain

WordPressプラグイン開発で押さえておきたい必須関数まとめ

WordPressプラグインを作るなら絶対に知っておきたい関数を、シンプルに分かりやすく解説します!

WordPressプラグインを作るなら絶対に知っておきたい関数を、カテゴリ別にわかりやすく紹介します。初心者の方にも使いどころがイメージできるよう、シンプルな説明と具体的な用途を添えています。

何をする関数?: WordPress本体から実行されたかを判定し、外部からの不正アクセスを防ぎます。

if ( ! defined( 'ABSPATH' ) ) {
    exit; // 直接アクセスを禁止
}

注意点: すべてのファイルの冒頭に記述するのが基本です。

参考 : register_activation_hook() – Function | Developer.WordPress.org

何をする関数?: プラグインが有効化された時に実行される処理を登録します。

register_activation_hook( __FILE__, 'my_plugin_activate' );

注意点: ファイルの先頭やグローバルな位置で実行してください。

参考 : register_activation_hook() – Function | Developer.WordPress.org

何をする関数?: プラグイン無効化時に実行される処理を登録します。

register_deactivation_hook( __FILE__, 'my_plugin_deactivate' );

参考 : register_deactivation_hook() – Function | Developer.WordPress.org

何をする関数?: エラー画面を表示して即時に処理を停止

if ( ! current_user_can('edit_posts') ) {
    wp_die('この操作を実行する権限がありません');
}

wp_die() は、WordPress 標準のエラーページを表示し、そこで処理を止めます。
内部的には HTML を出力して exit するため、ログインしていないユーザーへの通知や、致命的エラー時のフォールバック処理などに便利です。
第2引数でタイトル、第3引数でHTTPステータスコードなども指定できます。

参考 : wp_die() – Function | Developer.WordPress.org

何をする関数?: プラグインディレクトリのサーバー上のパスを取得します。

$path = plugin_dir_path(__FILE__);
// 例: /home/username/public_html/wp-content/plugins/my-plugin/

注意点: ファイル操作にはこの関数を使用して正しいパスを確保します。

参考 : plugins_url() – Function | Developer.WordPress.org

何をする関数?: プラグインディレクトリのURLを取得します。 応用例: JSやCSSファイルの読み込みで使用。

$plugin_url = plugin_dir_url(__FILE__);
// 結果: https://example.com/wp-content/plugins/my-plugin/

参考 : plugin_dir_url() – Function | Developer.WordPress.org

📝 メモ

📌__FILE__ には、そのコードが書かれたファイルのフルパスが設定されます

何をする関数?: WordPressに保存されたオプション(設定値)を取得

$my_setting = get_option('my_plugin_setting');

参考 : get_option() – Function | Developer.WordPress.org

何をする関数?: WordPressに保存されたオプション(設定値)を更新する。

update_option('my_plugin_setting', 'new_value');

📌 すでに保存されている値を上書きするだけでなく、まだ値がなければ新規に追加してくれる便利な関数です。

参考 : register_deactivation_hook() – Function | Developer.WordPress.org

何をする関数?: WordPressに保存されたオプション(設定値)を削除する

delete_option('my_plugin_setting');

📌 なお、削除対象のオプションが存在しない場合でも、エラーにはなりません(何も起こらないだけです)。

参考 : register_deactivation_hook() – Function | Developer.WordPress.org

何をする関数?: 必要に応じて中間ディレクトリも含めて一括作成します。

$result = wp_mkdir_p( WP_CONTENT_DIR . '/uploads/my-plugin/logs/' );
if ( ! $result ) {
    wp_die('フォルダの作成に失敗しました');
}

応用例: アップロードフォルダの初期化処理など。

参考 : wp_mkdir_p() – Function | Developer.WordPress.org

何をする関数?: 指定したファイルを削除

wp_delete_file('/path/to/file.jpg');

参考 : wp_delete_file() – Function | Developer.WordPress.org

何をする関数?: 指定したディレクトリとその中身を再帰的にすべて削除

wp_delete_directory('/path/to/folder/');

参考 : wp_delete_file() – Function | Developer.WordPress.org

何をする関数?: CSSファイル(スタイルシート)を安全にで読み込む

wp_enqueue_style(
    'my-plugin-style',                             // ハンドル名(識別子)
    plugin_dir_url(__FILE__) . 'assets/style.css', // ファイルのURL
    [],                                            // 依存関係(例: ['wp-editor'])
    '1.0.0',                                       // バージョン
    'all'                                          // メディアタイプ(例: 'screen')
);

この関数は、CSSファイルを WordPress に適切な順番で安全に読み込ませるための関数です。
読み込みタイミングや依存関係をWordPressが自動管理するため、テーマや他プラグインとの競合を防ぎやすくなります。

📌 よくある使用場所:

  • wp_enqueue_scripts アクション内(フロントエンド)
  • admin_enqueue_scripts アクション内(管理画面)

参考 : wp_enqueue_style() – Function | Developer.WordPress.org

何をする関数?: JavaScriptファイルを安全に読み込む

wp_enqueue_script(
    'my-plugin-script',                             // ハンドル名(識別子)
    plugin_dir_url(__FILE__) . 'assets/script.js',  // ファイルのURL
    ['jquery'],                                     // 依存スクリプト(例: jQuery)
    '1.0.0',                                        // バージョン
    true                                            // フッターで読み込むか(true = フッター)
);

この関数は、JavaScriptファイルをWordPressに依存関係を考慮して読み込ませる関数です。
true を指定することで、ページ下部(</body>直前)で読み込ませることができ、表示パフォーマンスの向上にも役立ちます。

参考 : wp_enqueue_script() – Function | Developer.WordPress.org

何をする関数?: 管理画面の「設定」メニューの中に、オリジナルの設定ページを追加します。

add_options_page(
    'ページタイトル',
    'メニュー名',
    'manage_options',
    'my-plugin-slug',
    'my_plugin_settings_page_callback'
);

🧠 よくある使い方

  • 独自プラグインやテーマの 設定ページ を管理画面に追加したいとき
  • ユーザーが簡単に管理画面から設定できるようにする場合
  • WordPress標準の「設定」メニューの中に統合したいとき

参考 : add_options_page() – Function | Developer.WordPress.org

何をする関数?: WordPress管理画面の左メニューに「独自のトップメニュー」を追加します。

add_menu_page(
    'ページタイトル',
    'メニュー名',
    'manage_options',
    'my-top-menu-slug',
    'my_top_menu_page_callback',
    'dashicons-admin-generic', // アイコン
    60 // 表示位置
);

参考 : add_menu_page() – Function | Developer.WordPress.org

何をする関数?: 既存のメニュー(または add_menu_page() で作成した親メニュー)のサブメニューを追加します。

add_submenu_page(
    'my-plugin-main',     // 親メニュースラッグ
    '設定ページ',
    '設定',
    'manage_options',
    'my-plugin-settings',
    'my_plugin_settings_page'
);

参考 : add_submenu_page() – Function | Developer.WordPress.org

🧠 add_menu_page() / add_submenu_page() / add_options_page() の違い

関数名追加場所見た目用途
add_menu_page()左サイドの最上位メニューアイコン付きのトップレベル独自管理UIを一式作るとき
add_submenu_page()任意のトップメニュー下階層化されたメニュー項目複数ページをまとめるとき
add_options_page()「設定」メニューの中軽量でWordPressに溶け込む単一の設定ページなどに便利

いつ使う?: フォームなどからテキストを受け取ったとき

何をする?: HTMLタグ・改行・無駄な空白を除去して、純粋な文字列に整形

$name = sanitize_text_field( $_POST['user_name'] );

参考 : sanitize_text_field – Hook | Developer.WordPress.org

いつ使う?: メールアドレスを取得したとき

何をする?: メールアドレスとして有効な文字だけを残し、それ以外を除外

$email = sanitize_email( $_POST['user_email'] );

参考 : sanitize_email() – Function | Developer.WordPress.org

いつ使う?: URLを取得したとき

何をする?: ダブルクオーテーションなどの文字を安全に変換

$url = esc_url_raw( $_POST['homepage_url'] );

参考 : sanitize_url() – Function | Developer.WordPress.org

✅ よく使われる sanitize_ 系関数

関数名主な用途
sanitize_text_field()改行・タグ・無駄な空白を除去(シンプルな文字列に)
sanitize_email()メールアドレスの形式チェックと除去
sanitize_url()URLとして不正な部分を除去
sanitize_user()ユーザー名用に制限された文字だけに整形
sanitize_title()スラッグ用に変換(空白をハイフンなどに)
sanitize_key()配列のキーや識別子など、英数字とアンダースコアのみ許可
sanitize_textarea_field()複数行テキスト(textarea用)に対するマイルドな整形

📌基本的に「データ取得直後に使う」のが原則です。

いつ使う?: 画面に出力する直前

何をする?: タグなどが文字として表示されるよう変換(XSS対策)

echo esc_html( $user_name );

参考 : esc_html() – Function | Developer.WordPress.org

いつ使う?: <input> などのHTML属性内に表示する前

何をする?: ダブルクオーテーションなどの文字を安全に変換

echo esc_html( $user_name );

参考 : esc_attr() – Function | Developer.WordPress.org

いつ使う?: URLをリンクや画像タグで出力するとき

何をする?: URLとして表示しても安全な形に整形

<a href="<?php echo esc_url( $url ); ?>">公式サイト</a>

参考 : esc_url() – Function | Developer.WordPress.org

✅ よく使われる esc_ 系関数

関数名主な用途
esc_html()HTMLとして表示する際のエスケープ(タグ無効化)
esc_attr()HTML属性値の中に入れるときに安全に変換
esc_url()URLを出力する際にスキームや特殊文字をチェック&エスケープ
esc_js()JavaScriptに含める文字列の安全なエスケープ
esc_textarea()<textarea> 内に表示する内容のエスケープ
esc_url_raw()esc_url() に似ているが、保存用(出力用ではない)
esc_html__() / _e()翻訳文字列に対するエスケープ付き関数(__() / _e() の拡張)

📌基本的に「出力時に使う」のが原則です。
表示直前に「本当に安全な形に変換されているか?」を保証する役割です。

何をする関数?: フォームにCSRF対策用のワンタイムトークンを埋め込む

<form method="post">
    <?php wp_nonce_field('my_action', 'my_nonce'); ?>
    <input type="submit" value="送信">
</form>

この関数は、フォーム送信の正当性を検証するための「nonce(ノンス)」を自動生成し、<input type="hidden"> として埋め込みます。
第1引数がアクション名、第2引数がフィールド名(デフォルトは _wpnonce)。

📌 nonce(ノンス)とは?
→ 「使い捨てトークン」のこと。CSRF攻撃の防止に使います。

参考 : wp_nonce_field() – Function | Developer.WordPress.org

何をする関数?: フォーム送信時にnonceを検証して、正しくなければ処理を止める

if ( ! check_admin_referer('my_action', 'my_nonce') ) {
    wp_die('不正なアクセスです');
}

wp_nonce_field() で埋め込んだ nonce が正しいかどうかをチェックします。
WordPress管理画面(admin)でのPOST処理の冒頭に置くのが基本です。

📌 チェックが失敗すると → 自動で false を返すので、自前で処理を止める or wp_die() を使います。

参考 : add_filter() – Function | Developer.WordPress.org

何をする関数?: WordPressが処理の途中で呼び出す**フック(Hook)**に、自分の関数を割り込ませるための関数です。

「通知を受け取って、なにか実行したい」場合に使う。

add_action( 'init', 'my_custom_init' );

function my_custom_init() {
    // 投稿タイプ登録や処理の初期化など
}

✅ 使いどころ例

  • カスタム投稿タイプの登録(init
  • 管理画面のメニュー追加(admin_menu
  • 投稿保存後の処理(save_post)など

参考 : add_action() – Function | Developer.WordPress.org

「処理されるデータを変更したい」場合に使う。

add_filter( 'the_content', 'my_custom_content_filter' );

function my_custom_content_filter( $content ) {
    return $content . '<p>記事の最後に追加!</p>';
}

✅ 使いどころ例

  • 投稿本文の加工(the_content
  • タイトルや抜粋の変更
  • フォーム出力内容やHTMLクラス名の追加 など

参考 : add_filter() – Function | Developer.WordPress.org

✍️ フックの基本構造

どちらも以下の構文で使えます

add_action( 'フック名', 'コールバック関数名', 優先度, 引数の数 );
add_filter( 'フィルタ名', 'コールバック関数名', 優先度, 引数の数 );
  • 優先度(省略可):数字が小さいほど先に実行(デフォルトは 10)
  • 引数の数:関数が受け取るパラメータの数を明示(省略可)

🎯 違いまとめ

項目add_action()add_filter()
目的動作を追加するデータを加工する
戻り値無視される戻り値が次に渡る
メニュー追加、CSS出力などコンテンツ改変、出力の上書き

何をする関数?: ショートコード([ ] で囲むコード)を定義し、出力内容を登録

add_shortcode('hello', 'my_hello_shortcode');

function my_hello_shortcode($atts) {
    return 'こんにちは、ショートコードの世界!';
}

📌 引数 $atts には、ショートコードに指定された属性が連想配列で渡されます。

参考 : add_shortcode() – Function | Developer.WordPress.org

何をする関数?: ショートコードに渡された属性(パラメータ)に初期値を設定する

function my_hello_shortcode($atts) {
    $atts = shortcode_atts([
        'name' => 'ゲスト',
    ], $atts);

    return 'こんにちは、' . esc_html($atts['name']) . 'さん!';
}

参考 : shortcode_atts() – Function | Developer.WordPress.org

🧩 セットで使う典型例

add_shortcode('greeting', function($atts) {
    $atts = shortcode_atts([
        'name' => '世界',
    ], $atts);

    return 'こんにちは、' . esc_html($atts['name']) . '!';
});

👉 投稿に [greeting name="花子"] と書くと
➡ 「こんにちは、花子!」が表示されます。

何をする関数?: SQL文に変数を安全に埋め込む(SQLインジェクション対策)

$sql = $wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}users WHERE user_login = %s",
    $user_login
);

prepare() は、SQLに変数を組み込むときに必ず使うべき関数です。
自動的にエスケープ処理を行い、SQLインジェクションを防ぎます。

参考 : wpdb::prepare() – Method | Developer.WordPress.org

🛑 やってはいけない例(直接埋め込み)

// 非常に危険!
$sql = "SELECT * FROM users WHERE user_login = '$user_input'";

このような書き方は、ユーザー入力をそのまま使っているため、SQLインジェクションのリスクがあります。

prepareを使う実用例

// SELECT
$wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM my_table WHERE id = %d", $id
    )
);

// INSERT
$wpdb->query(
    $wpdb->prepare(
        "INSERT INTO my_table (name, email) VALUES (%s, %s)", $name, $email
    )
);

// UPDATE
$wpdb->query(
    $wpdb->prepare(
        "UPDATE my_table SET email = %s WHERE id = %d", $email, $id
    )
);

📝 主なプレースホルダ

プレースホルダ用途
%s文字列
%d整数
%f数値(小数)

何をする関数?: 指定したメディアID(画像など)に対応するファイルのURLを取得します。

$image_url = wp_get_attachment_url( $attachment_id );

使いどころ

  • メディアライブラリに登録された画像やPDFのURLが欲しいとき
  • <img> タグを自作で書くときなど

参考 : wp_get_attachment_url() – Function | Developer.WordPress.org

何をする関数?: 指定したメディアIDから、サイズ指定込みの<img>タグを生成してくれます。

echo wp_get_attachment_image( $attachment_id, 'medium' );

使いどころ

  • サイズ指定や srcset 対応も含めて、安全&最適な画像出力がしたいとき
  • サムネイル・ギャラリー表示などに便利

参考 : wp_get_attachment_url() – Function | Developer.WordPress.org

🧪サンプルコード(alt属性つき)

echo wp_get_attachment_image(
    $attachment_id,
    'medium',
    false,
    [ 'alt' => '商品画像' ]
);

何をする関数?: 指定したメディアIDから、画像のURL・幅・高さ・存在チェックをまとめて取得できます。

$image_data = wp_get_attachment_image_src( $attachment_id, 'medium' );

使いどころ

  • <img> タグを自分で組み立てたいとき
  • サイズ付きの画像URLだけを使いたいとき(背景画像やJS処理など)

参考 : wp_get_attachment_image_src() – Function | Developer.WordPress.org

何をする関数?: 指定した画像のメタ情報(幅・高さ・ファイル名・サムネイルサイズなど)を配列で取得します。

$metadata = wp_get_attachment_metadata( $attachment_id );

使いどころ

  • 画像の幅・高さ・保存パスなどを取得して使いたいとき
  • 複数のサムネイルサイズが生成されているかを確認したいとき
  • 独自処理で画像サイズを振り分けたいとき(例:カスタムギャラリー)

参考 : wp_get_attachment_metadata() – Function | Developer.WordPress.org

📌 類似関数との違いまとめ

関数名取得できるもの出力形式特徴
wp_get_attachment_url()URLのみ文字列ファイルURLだけ欲しいときに
wp_get_attachment_image()<img>タグHTMLタグ手軽に表示。サイズ指定やsrcset対応も自動
wp_get_attachment_image_src()URL・幅・高さなど配列HTMLを自作したいときに便利
wp_get_attachment_metadata()サイズごとの情報やメタ情報配列複数サイズの管理や詳細な処理に便利

ご相談・お問い合わせ

月~金 10:00~17:00 受付

2営業日以内に一次回答いたします

関連ブログ

生成AIで始める! 「WordPress PDFプレビュー プラグイン」 の作り方完全ガイド

生成AIを使った、WordPressプラグインの開発方法

さらに詳しく

関連サービス

「Support」、「Technical」、「Customer」、「Service」の文字 と 技術的なWordPress顧客サポート

WordPressセキュリティ保守

さらに詳しく
クラウド上で安全・安定的に運用しているWebサイト、データベース、メール

クラウド ウェブサーバ構築

さらに詳しく

美しく安全なウェブサイト制作

さらに詳しく
計算機

WordPress サイト 制作費 価格表

さらに詳しく