добавить действие в functions.php, выполняете действия в плагине?
Я пытаюсь установить функцию add_action
в моем текущем активном файле темы WordPress functions.php
для определенной функции do_action
в активированном плагине WordPress.
Функция add_action
в моем текущем активном файле темы WordPress functions.php
не работает.
Однако это работает, если я скопирую функцию add_action
из моей текущей активной темы WordPress functions.php
файла в активированный файл плагина WordPress прямо перед функцией do_action
.
Есть ли способ сделать это?
1 answers
Стреляли здесь в темноте, но...
Вполне возможно, что плагин с определением do_action
подключается до обработки темы.
Узнайте, где определен do_action
, и выясните, когда он подключается.
Возможно, вам потребуется подключиться к функции, к которой также подключено определение do_action
, а ЗАТЕМ подключиться к этому определению действия.
Пример:
Откройте файл плагина, содержащий определение do_action
, которое вы пытаетесь подключитесь к своей пользовательской функции.
Посмотрите, находится ли определение do_action
в функции плагина.
Если это так, просмотрите плагин, чтобы найти ссылку add_action()
на это конкретное имя функции, содержащее определение do_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!';
}