在函数.php中添加动作,在插件中添加动作吗?

时间:2012-09-10 作者:Boyster

我正在尝试设置add_action 当前活动WordPress主题中的函数functions.php 文件,用于定义的do_action 在激活的WordPress插件中运行。

这个add_action 当前活动WordPress主题中的函数functions.php 文件不工作。

但是,如果我复制add_action 来自当前活动WordPress主题的函数functions.php 文件输入到激活的WordPress插件文件中do_action 作用

有没有办法做到这一点?

1 个回复
最合适的回答,由SO网友:Michael Ecklund 整理而成

在黑暗中拍摄,但是。。。

完全可以使用do_action 定义在处理主题之前挂接。

找出do_action 定义,并找出它何时被钩住。

您可能需要钩住do_action 定义也被钩住,然后钩住那个动作定义。

Example:

打开包含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!\';
}

结束

相关推荐

从unctions.php调用的Add_Actions未返回好值

我正试图通过这些功能为我的网站添加一些安全/访问防护。php。然而,每当我尝试通过函数添加时。php(而不是作为插件,我以前做过)失败(总是返回false)。例如:add_action(\"parse_query\", checkaccess()); // in functions.php 以及function checkaccess() { $allowAccess = false; if(is_admin()||is_front_page()||i