You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:06:25