我已经在自己的网站上安装了Google Analyticator插件。我还使用MobilePress插件提供了针对非智能手机移动浏览器的主题。我已经设置了用于该主题的Google Analytics(分析)移动版,并希望禁用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');


非常感谢您的帮助。

评论

对于我来说,这应该在技术上可行,因此您运行该代码的时间有些错误(太早或太晚)。请提供更多信息。

是的,我认为它也可以。我对添加/删除操作没有太多的经验,所以我不确定如何进一步调试它。即使EAMann的答案行得通,您还在寻找什么样的信息?

我有点困惑-如果需要永久删除通过插件正常禁用插件,难道不是很容易吗?哪个EAMann的答案只能通过代码来完成。我以为您希望在某些情况下将其动态禁用...

我有一个常规主题,可以在任何普通的桌面浏览器的wordpress中设置。对于这个主题,我想使用GA插件。 mobilepress插件使用php获取用户代理字符串,并为智能手机或非智能手机提供不同的主题。我只想对非智能手机主题使用functions.php文件,以禁止GA插件仅将JS放在该主题的中。仍然需要为其他两个主题(台式机和智能手机)启用它。这有助于澄清吗?

是的,这就是我的想法。但是停用会永久禁用插件,并且会一直处于关闭状态,直到明确激活为止。我认为它不适合您的用例。

#1 楼

当WordPress激活插件时,它将调用activate_plugin()函数。此功能可激活沙箱中的插件,并在成功后重定向到其他地方。一些作者已使用它来以编程方式激活插件依赖项。

还有另一个功能deactivate_plugin(),其功能与此相反。实际上,这是当您单击“停用”或“禁用”。

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

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 );


这只会关闭插件,但不会触发任何操作已注册停用插件。因此,如果该插件在停用时删除了选项或数据库表,则您想执行此“静默”停用以保留该信息并在其他地方使用。
WordPress的《 HitchHacker指南》中的文档


评论


很好的答案-而不是仅仅与另一个(相比)相比较,乏味的“这是一个网站”答案可能在附近。

–编辑
2011年3月15日21:59

放置在functions.php中的此代码将停用管理员中的插件,从而将其与其他两个主题禁用。谢谢拉斯特指出。我只想对functions.php文件所在的一个主题禁用它。

–PNMG
2011年3月16日,1:19

您一次只在给定站点上一次使用一个主题...但是,如果要在停用主题后重新激活插件,那也是可能的。

–EAMann
2011年3月21日在14:35

#2 楼

这要归功于EAMann的出色回答,我认为这也可能对原始发布者有所帮助...

我需要一种解决方案来确保用户上传高级版本后停用了我的插件(以避免潜在的冲突)。以前,我使用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却像超级按钮一样工作。

评论


只是要注意,我很确定is_plugin_active已经在deactivate_plugins挂钩中进行了检查,因此它不需要再次执行此操作

–布莱恩·威利斯(Bryan Willis)
2014年9月11日下午4:24

#3 楼

这是我的解决方案,创建一个可以禁用其他插件的插件,如下所示:

/*
 * Plugin Name: Disable/Configure Plugins
 * Description: Lets you disable/configure plugins based on environment variables
 * Author:      Chris Sewell
 */

/**
 * Disable specified plugins in development environment.
 * 
 * This is a "Must-Use" plugin. Code here is loaded automatically before regular plugins load.
 * This is the only place from which regular plugins can be disabled programatically.
 * 
 * Place this code in a file in WP_CONTENT_DIR/mu-plugins or specify a custom location 

 * to "development" or "production" in each particular server/environment.
 */

/* Disable specified plugins in development environment */
if (((getenv('environment') == 'production') || (getenv('environment') == 'alpha')) == false) {
    $plugins = array(
        'w3-total-cache/w3-total-cache.php'
    );
    require_once(ABSPATH . 'wp-admin/includes/plugin.php');
    deactivate_plugins($plugins);
}


将其推送到生产环境,启用它,然后将数据库导入本地开发人员机器。

来源