アクティブ化されたWordPressプラグイン内の定義済みのadd_action
関数に対して、現在アクティブなWordPressテーマのfunctions.php
ファイルにdo_action
関数を設定しようとしています。
私の現在アクティブなWordPressテーマのadd_action
ファイルのfunctions.php
関数は機能しません。
ただし、現在アクティブなWordPressテーマのadd_action
ファイルから、functions.php
関数の直前に、do_action
関数をアクティブ化されたWordPressプラグインファイルにコピーすれば問題ありません。
これを行う方法はありますか?
ここで暗闇の中で撃ったが….
テーマが処理される前にdo_action
定義を持つプラグインがフックされる可能性は十分にあります。
do_action
が定義されている場所を調べ、いつフックされているのかを調べます。
do_action
定義もフックされていることを関数にフックし、THENがそのアクション定義にフックする必要があります。
例:
カスタム関数でフックしようとしているdo_action
定義を含むプラグインファイルを開きます。
do_action
定義がプラグイン関数内にあるかどうかを確認してください。
その場合、プラグインを調べて、do_action
定義を含むその特定の関数名のadd_action()
参照を見つけます。
そのフックが何であるか書き留めます。
これで、WordPressがdo_action
定義を含むプラグインの関数をいつ呼び出すかがわかります。
テーマfunctions.php
ファイルには、次のコードのようなものがあります。
/**
* This is the WordPress action the plugin's do_action function definition is
* hooked to.
*
* Example: This hook could be anything. I'm not saying the hook will be: "plugins_loaded"
* for sure, but if it was "plugins_loaded"... After WordPress loads and instantiates all
* of it's activated plugins, WordPress will fire the plugin's function containing the
* plugin's do_action definition (As long as the plugin you are trying to work with is
* activated). So you're getting on the same level as the plugin when it needs WordPress to
* execute this particular defined custom action and telling WordPress that your theme function
* needs to be on that same level as well, before it can hook to your plugin's do_action reference.
*/
add_action('plugins_loaded', 'wpse_setup_theme');
function wpse_setup_theme(){
/**
* This your function that you want fired then the do_action is executed.
*
* Example: If the plugin file has a function named osmosis_jones() and
* inside osmosis_jones(), there is a do_action() reference. Note down
* the do_action tag name inside the osmosis_jones() function.
*/
add_action('the_plugin_do_action_tag_name', 'wpse_display_theme_header');
}
function wpse_display_theme_header(){
echo 'THEME HEADER HERE!';
}