激活插件后在页脚或页眉上执行Hook

时间:2019-12-04 作者:Lenin Zapata

我有以下代码片段,但它不起作用,我希望在激活插件后,这会调用页脚上的操作并打印一些内容,但我不能这样做,问题似乎是admin_footer 不跑,我不知道activated_plugin 就在html打印之前或之后,以便admin_footer, 或者我该如何修复它?

add_action( \'activated_plugin\', \'admin_activated_plugin\' );
function admin_activated_plugin(){
  // up to here if you run ....
  // but
  // the hook below doesn\'t
  add_action( \'admin_footer\', \'after_activate_print_footer\', 99 );
}
function after_activate_print_footer(){
 echo "something";
}
总之,我想在插件激活后在页眉或页脚中打印文本

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

检查action hooks API reference, “activated\\u plugin”是一个高级挂钩。它在正常循环之外运行,允许您做您想做的事情。

更好的方法是add_action(\'admin_footer_text\'), 如图所示WPBeginner article.

但是,如果您只想在某个特定插件被激活时显示,可以添加以下“if”语句来检查您的plugin is active:

if (is_plugin_active($plugin_path)){
    add_filter(\'admin_footer_text\', \'[your function here]\');
}
如果只想在插件激活后立即运行一次,可以使用“activated\\u plugin”设置选项变量。然后,使用“admin\\u footer\\u text”操作检查并清除该选项变量:

// Set the option indicating the plugin was just activated
function wpse_set_activated(){
    add_option("wpse_my_plugin_activated",\'true\');
}
add_action("activated_plugin","wpse_set_activated");

// Setup conditional admin_footer text mod
function wpse_setup_admin_footer_text(){
    if (is_plugin_active("plugin_folder/my_plugin.php")){
        $just_activated = get_option("wpse_my_plugin_activated",\'false\');
        if ($just_activated !== \'true\') {
            echo "";
        } else {
            echo "My plugin is active";
            delete_option("wpse_my_plugin_activated");
        } // end if is_active
    } else {
        echo "";
    }// end if is_plugin_active
}
add_filter(\'admin_footer_text\', \'wpse_set_admin_footer_text\');
希望这有帮助!

相关推荐

为什么WordPress在未登录时会将与管理员相关的脚本(例如,Reaction、ReactDOM、Redux、Hooks、TinyMCE等)放入队列?

为了提高我的网站的性能,我注意到Wordpress在前端加入了许多与管理相关的脚本和样式表。我想知道我怎样才能阻止这一切的发生。。。我正在考虑将所有的违规行为都退出队列,但我的服务器响应时间会稍微慢一点。是否有一种经过测试的方法可以做到这一点?