добавить действие в functions.php, выполняете действия в плагине?


Я пытаюсь установить функцию add_action в моем текущем активном файле темы WordPress functions.php для определенной функции do_action в активированном плагине WordPress.

Функция add_action в моем текущем активном файле темы WordPress functions.php не работает.

Однако это работает, если я скопирую функцию add_action из моей текущей активной темы WordPress functions.php файла в активированный файл плагина WordPress прямо перед функцией do_action.

Есть ли способ сделать это?

Author: Michael Ecklund, 2012-09-10

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!';
}
 4
Author: Michael Ecklund, 2012-09-10 16:15:06