wordpress - 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。
我确定这个问题正在解决,但我不知道如何解决。请分享你的经验。
解决方案
我没有找到我需要的停用插件的解决方案,但我找到了另一种方法:
在我的插件的索引文件中:
$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.");
}
这个“技巧”让我可以避免给用户带来非信息性错误(关于重新声明),并提供最有用的信息和说明。
推荐阅读
- javascript - 有没有办法为Oracle中的文件定义一个新目录
- sql - 完全外连接在右侧没有获得 NULL 值,而它们确实存在于左侧
- node.js - 如何在 npm gulp maven deploy 插件中传递用户名和密码
- php - 试图在laravel中获取非对象的属性“状态”
- powershell - 格式化来自 docker 事件的 json 输出
- javascript - 如何仅禁用上个月的日期
- android - 如何解决重复的 gradle 依赖项(jsr305)?
- list - 如何检查1000s目录中的配对文件
- performance - VUE/NUXT SSR 在不重新加载的情况下将查询字符串添加到 URL - 性能问题和缓慢的滚动
- java - ActiveMQ 持久消费者在删除主题后保留其订阅