概要
do_action アクションは、WordPress のフックシステムの重要な部分で、特定のイベントが発生した際に他の関数を実行するためのものです。このアクションは、以下のような機能を実装する際によく使われます:
- プラグインのフック
- テーマの拡張
- ユーザーインターフェースのカスタマイズ
- データの処理
- カスタムウィジェットの初期化
- カスタムコンテンツの表示
- 管理画面のカスタマイズ
- 外部APIとの連携
構文
do_action( 'hook_name', $arg1, $arg2, ... );
パラメータ
hook_name: アクションフックの名前(必須)$arg1,$arg2, …: フックに渡す引数(オプション)
戻り値
この関数は、戻り値を返しません。実行される関数があれば、その結果を返すことがあります。
関連する関数
使用可能なバージョン
do_action は、WordPress の全てのバージョンで利用可能です。
コアファイルのパス
このアクションは wp-includes/plugin.php に含まれています。
サンプルコード
サンプル1: 基本的な do_action の使用
function my_custom_function() {
echo 'Hello, World!';
}
add_action( 'my_custom_hook', 'my_custom_function' );
do_action( 'my_custom_hook' );
説明: my_custom_hook というフックを作成し、my_custom_function を関連付け、フックを実行しています。
サンプル2: 引数を渡す
function greet_user( $name ) {
echo 'Hello, ' . $name . '!';
}
add_action( 'greet_hook', 'greet_user' );
do_action( 'greet_hook', 'Alice' );
説明: greet_hook に引数として名前を渡し、それに応じた挨拶を表示します。
サンプル3: 複数の引数
function display_info( $name, $age ) {
echo $name . ' is ' . $age . ' years old.';
}
add_action( 'info_hook', 'display_info' );
do_action( 'info_hook', 'Bob', 30 );
説明: info_hook で名前と年齢を受け取り、その情報を表示します。
サンプル4: プラグイン内のカスタムアクション
function my_plugin_activation() {
do_action('my_plugin_activated');
}
add_action('activated_plugin', 'my_plugin_activation');
説明: プラグインがアクティブになると、カスタムアクション my_plugin_activated が実行されます。
サンプル5: テーマで使用する
function custom_header() {
do_action('before_header');
// ヘッダーの出力が続く
}
add_action('wp_head', 'custom_header');
説明: wp_head アクションで呼び出し、ヘッダーが出力される前に before_header アクションを実行します。
この関数のアクションでの使用可能性
| アクション名 | 使用例 |
|---|---|
| mu_plugin_loaded | 〇 |
| registered_post_type | 〇 |
| plugins_loaded | 〇 |
| wp_roles_init | 〇 |
| setup_theme | 〇 |
| after_setup_theme | 〇 |
| set_current_user | 〇 |
| init | 〇 |
| register_sidebar | 〇 |
| wp_loaded | 〇 |
| send_headers | 〇 |
| parse_query | 〇 |
| pre_get_posts | 〇 |
| wp | 〇 |
| template_redirect | 〇 |
| get_header | 〇 |
| wp_head | 〇 |
非推奨または削除されたバージョン
do_action は特定のバージョンで非推奨または削除されたことはありません。
以上が do_action アクションの解説とサンプルコードです。WordPress の開発に活用してください。