WP Bones框架下插件激活时如何检测WooCommerce等依赖插件
WP Bones框架下激活时检测依赖插件的实现方式
WP Bones对WordPress原生激活流程做了封装,不需要手动注册原生激活钩子,按照框架规范实现即可:
- 找到你插件目录下
plugin/Plugin.php文件,这个是你插件的核心启动类,默认继承WP Bones\Foundation\Plugin基类 - 在类中重写
activation方法,这个方法会在插件激活时自动执行,和原生register_activation_hook挂载的回调执行时机完全一致 - 框架已经提前加载了WordPress插件检测依赖的管理端核心文件,不需要手动引入
wp-admin/includes/plugin.php,可以直接调用is_plugin_active做准确检测,比class_exists判断更可靠(避免其他插件提前加载依赖类导致的误判) - 你可以直接抛出框架自带的
PluginDependencyException异常,框架会自动处理当前插件停用、错误提示输出的逻辑,不需要手动写deactivate_plugins、wp_die逻辑
参考实现代码:
<?php namespace YourPluginNamespace; use WP_Bones\Foundation\Plugin as BasePlugin; use WP_Bones\Foundation\Exceptions\PluginDependencyException; class Plugin extends BasePlugin { // 框架要求的其他基础属性、启动方法保持默认即可 public function activation() { // 检测WooCommerce是否激活 if (! is_plugin_active('woocommerce/woocommerce.php')) { throw new PluginDependencyException( __('请先安装并激活WooCommerce插件,点击浏览器返回按钮继续操作。', 'your-plugin-text-domain') ); } // 此处继续写你原本需要的其他激活逻辑:比如初始化默认配置、创建数据表、刷新重写规则等 } }
如果你不想用框架自带的异常处理,也可以直接在activation方法里写你熟悉的原生WordPress逻辑,不会出现兼容问题。
如果需要做常态化的依赖校验(比如用户激活你的插件之后手动停用了WooCommerce,需要在后台给出提示),可以在同一个Plugin类的boot方法中挂载admin_notices钩子实现,boot方法会在所有WordPress插件加载完成后执行,适合做这类运行时的检测提示。
内容的提问来源于stack exchange,提问作者Simon Hall
相关产品推荐
相关产品推荐

