问题描述

我已经在我的网站上安装了 Google Analyticator plugin 。我还使用 MobilePress plugin 来为 non-smart-phone 移动浏览器设计的主题。我已经设置了 Google Analytics for Mobile 用于此主题,并希望禁用 Analyticator 插件,因为它包含一个更大的 js 文件的调用。

有人知道是否可以使用 functions.php 或其他方法禁用插件?

我相信我已经找到了向页面添加功能的代码,所以如果无法禁用整个插件,是否可以停止执行的操作?我试图直接禁用它们,没有运气。这是插件文件中的代码:

add_action('wp_head', 'add_google_analytics', 999999);
add_action('init', 'ga_outgoing_links');

我试图删除这些行动:

remove_action('wp_head','add_google_analytics',9999999);
remove_action('init', 'ga_outgoing_links');

任何帮助是极大的赞赏。

最佳解决方案

当 WordPress 激活一个插件时,它会调用 activate_plugin()函数。此功能可在沙箱中激活该插件,并在其他地方重定向成功。几个作者使用它来编程地激活插件依赖。

还有另一个功能,deactivate_plugin(),反过来做类似的事情,它实际上是当您点击”deactivate” 或”disable.” 时,WordPress 如何停用 plug-ins

要停用已安装的插件,只需调用:

deactivate_plugins( '/plugin-folder/plugin-name.php' );

或者,一次停用多个插件:

deactivate_plugins( array( '/first-plugin/first.php', '/second-plugin/second.php' ) );

有一个第二个参数 (第一个是要禁用的插件的字符串或数组),允许您禁用插件而不调用停用挂接。默认情况下,它设置为 false,我建议您这样做。除非由于某种原因你想绕过去激活,否则你会做:

deactivate_plugins( '/plugin-folder/plugin-name.php', true );

这将只是关闭插件,但它不会启动任何插件注册做停用。因此,如果插件在停用时删除选项或数据库表,则需要执行 「静默」 停用以保留该信息并在其他位置使用它。

次佳解决方案

这是感谢上面的 EAMAN 的辉煌的回答,我以为这可能对原来的海报也有帮助吗?

我需要一个解决方案,以确保用户停用我的插件,如果他们上传了高级版本 (以避免潜在的冲突) 。以前,我使用 is_plugin_active 检测到状态,并显示管理错误消息,提示用户将其关闭。这是更平稳…

function deactivate_plugin_conditional() {
    if ( is_plugin_active('plugin-folder/plugin-name.php') ) {
    deactivate_plugins('plugin-folder/plugin-name.php');
    }
}
add_action( 'admin_init', 'deactivate_plugin_conditional' );

注意:register_activation_hook 似乎没有起作用,但 admin_init 的作用就像一个魅力。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。