首页 > 解决方案 > WordPress:如何停用免费版。插件,在Pro之前会被激活吗?

问题描述

我为 WordPress 开发插件,它有两个版本:免费版和专业版。对于使用 Freemius 的许可。

我收到了许多支持消息,例如:“由于错误,我无法激活 Pro 插件:Cannot declare class A, because the name is already in use”。

所以,用户不明白,那个免费版。需要先停用,然后才能激活 Pro。因为看起来用户想要同时激活两个插件。

我想在激活 Pro 的过程中以编程方式停用免费插件。

当然,我尝试使用deactivate_plugins()函数,并将其挂钩"register_activation_hook",但是:

如果我尝试停用(例如 Akismet) - 它正在工作。我正在激活我的插件 - Akismet 正在停用,但是当我激活了我的免费版时。插件,并试图激活 Pro - 我得到同样的错误 - 无法声明类......

看来,那register_activation_hook火来得太晚了,之前来不及停用Free。

我确定这个问题正在解决,但我不知道如何解决。请分享你的经验。

标签: wordpresspluginshook

解决方案


我没有找到我需要的停用插件的解决方案,但我找到了另一种方法:

在我的插件的索引文件中:

$plugin_path = 'my_plugin/index.php';

if ( function_exists('is_plugin_active') && is_plugin_active($plugin_path)) {
    wp_die("Before activating Pro version, please, deactivate Free version. You can't activate it both.");
}

这个“技巧”让我可以避免给用户带来非信息性错误(关于重新声明),并提供最有用的信息和说明。


推荐阅读