概要
did_action
アクションは、特定のアクションが既に実行済みかどうかを調べるために使用されます。これにより、同じアクションが二重に実行されないように制御することができ、以下のような機能を実装する際によく使われます。
- プラグインの初期化プロセスの制御
- テーマの設定やカスタマイズのチェック
- 独自のフックやアクションの実行状態の確認
- データベース操作が必要な場合の状態確認
- AJAXリクエストの成功状態の確認
- 設定の変更が必要な場合の判別
- フロントエンドとバックエンドの処理分岐
- ユーザー権限の確認などの条件付き処理
構文
did_action( $hook );
パラメータ
$hook
(string) – 確認したいアクションフックの名前。
戻り値
- int – アクションが実行された回数を返します。0は未実行、1は1回実行、2は2回実行されていることを意味します。
関連する関数
使用可能なバージョン
did_action
は WordPress 2.1 以降で使用可能です。
コアファイルのパス
wp-includes/plugin.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 | 〇 |
サンプルコード
サンプルコード1: アクションの確認
このサンプルでは、特定のアクションが実行済みかどうかをチェックします。
if ( did_action( 'my_custom_action' ) ) {
// アクションが実行済みの場合の処理
echo "my_custom_action が実行されました。";
} else {
// 未実行の場合の処理
echo "my_custom_action が未実行です。";
}
引用元: https://developer.wordpress.org/reference/functions/did_action/
サンプルコード2: プラグインの初期化
このサンプルは、特定のプラグインが設定を行った後に実行される処理を示します。
add_action( 'plugins_loaded', 'my_plugin_init' );
function my_plugin_init() {
if ( did_action( 'my_custom_action' ) ) {
// my_custom_action が実装されている場合の処理
}
}
引用元: https://developer.wordpress.org/reference/functions/did_action/
サンプルコード3: テーマのセットアップ
テーマがセットアップされた後に特定の処理を行う際のサンプルです。
add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup() {
if ( did_action( 'init' ) ) {
// 'init' アクションが実行済みの場合の処理
}
}
引用元: https://developer.wordpress.org/reference/functions/did_action/
サンプルコード4: AJAXリクエストの確認
このコードは、AJAXリクエストが成功したかどうかを確認します。
add_action( 'wp_ajax_my_ajax_action', 'my_ajax_function' );
function my_ajax_function() {
if ( did_action( 'wp_ajax_my_ajax_action' ) ) {
// AJAXアクションが実行済みの場合の処理
}
}
引用元: https://developer.wordpress.org/reference/functions/did_action/
サンプルコード5: フックの状態確認
このサンプルでは、特定のフックが呼ばれているか確認し、その状態に応じて処理を行います。
add_action( 'wp_head', 'my_head_function' );
function my_head_function() {
if ( did_action( 'wp_head' ) ) {
// wp_head アクションが呼ばれている場合の処理
}
}
引用元: https://developer.wordpress.org/reference/functions/did_action/