我的插件的过滤器和操作无法在任何地方运行

时间:2017-04-10 13:23:20

标签: php wordpress

我正在开发一个Wordpress插件,我想在每个页面上执行操作。但是,看起来我的插件只有在访问使用其中一部分的页面时才会起作用,例如,短代码。在其他每一页上,它都没有做任何事情。我怎么能告诉Wordpress运行我的插件的钩子,即使它没有在那个特定的页面上使用?

我用这段代码测试了它。如果我打开一个使用我的插件注册的短代码的页面,“HUH?”将出现在页面的最顶部。在其他所有页面上,没有任何内容......

add_action('init', 'myplugin_init');
function myplugin_init() {
    echo 'HUH?';
}

2 个答案:

答案 0 :(得分:0)

我认为,您的代码是作为条件代码的子代。例如以下内容:

if($condition == true)
{
    add_action('init', 'function_to_call');
}

为了调试,请将代码放在主插件文件中并查看结果。 我希望它有效。

答案 1 :(得分:0)

我注意到了“HUH?”邮件在登录页面和所有管理页面上都可见。我搜索了很多,并在codex上发现了这篇文章:https://codex.wordpress.org/Function_Reference/is_plugin_active。事实证明,我需要在我的主题的functions.php中添加一行,因为前端默认不加载插件。所以这是解决方案,将此行添加到您的functions.php:

include_once( ABSPATH . 'wp-admin/includes/plugin.php' );