通过主题禁用插件/插件操作

时间:2011-03-15 作者:PNMG

我已安装Google Analyticator plugin 在我的网站上。我也在使用MobilePress plugin 为非智能手机手机浏览器设计主题。我已经准备好了Google Analytics for Mobile ,并希望禁用Analyticator插件,因为它包含对更大js文件的调用。

有人知道是否可以使用函数禁用插件吗。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\');
非常感谢您的帮助。

3 个回复
最合适的回答,由SO网友:EAMann 整理而成

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

还有一个功能,deactivate_plugins(), 反过来也会发生类似的事情。。。这实际上是WordPress在您点击时停用插件的方式;停用(&Q);或“或”;禁用"E;

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

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 );
这只会关闭插件,但在停用时不会触发插件注册要执行的任何操作。因此,如果插件在停用时删除选项或db表,您可能希望这样做;“无声”;停用以保留该信息并在其他地方使用。

SO网友:Mark Jeldi

这要感谢埃曼在上面的精彩回答,我认为这可能对原始海报也有帮助。。。

我需要一个解决方案,确保用户在上传高级版本时停用我的插件(以避免潜在冲突)。之前,我用is\\u plugin\\u 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\\u activation\\u hook上似乎不起作用,但admin\\u init的工作方式很有魅力。

SO网友:user128526

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

/*
 * 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);
}
将其推送到生产环境中,启用它,然后将数据库下放到本地开发人员机器上。

Source

结束

相关推荐

GPL and plugins

插件开发中心说:“您的插件必须与GPLv2兼容。”。但我发现Topsy插件在GPLv3下。http://www.gnu.org/licenses/rms-why-gplv3.html 声明GPLv2和GPLv3不兼容。那么这应该被允许吗?我想使用Topsy插件中的一些代码。那么,我应该在GPLv2或GPLv3下发布插件吗??