MENU

add_action()– Function –

add_action() は、 WordPressのフック機能 を利用して、 特定のタイミングで独自の処理(関数)を実行する ためのテンプレートタグです。

目次

機能の説明

  • add_action()アクションフックに関数を登録 し、WordPressの実行時に 特定のイベントで関数を実行 します。
  • フックには テーマやプラグインの初期化、投稿保存、ウィジェット読み込みなど が含まれます。
  • アクションには 実行するタイミング(優先度) も設定できます。

シンプルなコード例

function my_custom_function() {
    echo 'カスタム処理が実行されました';
}
add_action('init', 'my_custom_function');

上記のコードは、 WordPressが初期化されるinitタイミングでmy_custom_function()を実行 します。

使い方の解説

  • 第一引数 にアクションフックの名前(例: init)を指定し、 第二引数 に実行する関数名を指定します。
  • 第三引数 はオプションで、関数の 優先度(デフォルトは10) を指定します。
  • 第四引数 には、 関数が受け取る引数の数 を指定できます(デフォルトは1)。

使用例

function enqueue_my_styles() {
    wp_enqueue_style('my-custom-style', get_template_directory_uri() . '/style.css');
}
add_action('wp_enqueue_scripts', 'enqueue_my_styles');

function custom_footer_message() {
    echo '<p>カスタムフッターメッセージ</p>';
}
add_action('wp_footer', 'custom_footer_message', 20);
  • wp_enqueue_scripts: テーマのスクリプトやCSSを読み込むタイミングでenqueue_my_styles()を実行します。
  • wp_footer: ページのフッターが表示される前にcustom_footer_message()を実行し、HTMLメッセージを出力します。 優先度は20 に設定されています。

一緒に使うことが多い関連タグ

do_action()

do_action() は、 独自のアクションフックを作成して実行 するためのテンプレートタグです。

do_action('my_custom_action');

function my_custom_function() {
    echo 'カスタムアクションが実行されました';
}
add_action('my_custom_action', 'my_custom_function');
  • do_action() は指定したタイミングで 独自のアクションを実行 します。
  • add_action() を使って my_custom_actionに関数を紐付け、カスタムフックが呼ばれたときに実行します。

remove_action()

remove_action() は、 既存のアクションフックから登録されている関数を解除 するためのテンプレートタグです。

remove_action('wp_footer', 'custom_footer_message');

remove_action() を使うことで、 wp_footer に登録されていた関数を実行しないように解除 します。

追加情報を取得したい場合

フックの順序や引数を確認する

add_action() で登録した関数が どの順序で実行されるか を確認することが重要です。また、必要に応じて関数に 複数の引数 を渡すこともできます。

function my_custom_function($arg1, $arg2) {
    echo '引数1: ' . $arg1 . '、引数2: ' . $arg2;
}
add_action('init', 'my_custom_function', 10, 2);

add_action() の第四引数に2 を指定することで、 2つの引数を受け取る関数 を登録します。

current_action() で実行中のフックを取得

current_action() は、現在実行されている アクションフックの名前 を取得します。

function show_current_action() {
    echo '現在のフックは: ' . current_action();
}
add_action('wp_footer', 'show_current_action');

出力できる情報

  • current_action: 実行中のアクション名

想定されるトラブル

アクションが実行されない

  • 関数名やフック名の スペルミス
  • 優先度の設定ミス で他のフックに上書きされている可能性があります。

解決方法

  1. フック名と関数名を再確認 する。
  2. 優先度を 高く(例: 1) 設定して、上書きを防ぐ。

複数のフックが重複している

同じフックに 複数の関数を登録 しており、想定外の順序で実行される。

解決方法

  1. remove_action() を使って不要なフックを解除する。
  2. 優先度を適切に調整 する。

Q&A

add_action()do_action() の違いは何ですか?

add_action()既存のアクションに関数を登録 し、do_action()アクションを実行 するためのタグです。

同じ関数を複数回登録できますか?

はい、可能です。ただし 優先度が異なる場合 に限り、同じフックに同じ関数を複数回登録できます。

add_action() を使うタイミングは?

テーマやプラグインの初期化、スクリプトやスタイルの読み込み、投稿保存後の処理など、 特定のタイミングで処理を実行したい場合 に使用します。

まとめ

add_action() は、 WordPressのフック機能を利用して、特定のタイミングでカスタム関数を実行するための重要なテンプレートタグ です。

do_action()remove_action() などのタグと組み合わせることで、テーマやプラグイン開発を柔軟に拡張できます。

カスタマイズ例

1