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

如何让WordPress插件依赖其他插件并实现激活限制与通知?

实现WordPress插件依赖激活限制及行内管理员通知

一、阻止插件激活(依赖未满足时)

通过admin_init钩子捕获插件激活动作,检查依赖插件状态,若未激活则直接阻止当前插件激活并提示:

add_action('admin_init', 'my_plugin_check_required_dependency');
function my_plugin_check_required_dependency() {
    // 定义依赖插件的主文件路径(示例为WooCommerce)
    $required_plugin = 'woocommerce/woocommerce.php';
    $current_plugin = plugin_basename(__FILE__);

    // 判断是否正在激活当前插件
    if (isset($_GET['action'], $_GET['plugin']) && $_GET['action'] === 'activate' && $_GET['plugin'] === $current_plugin) {
        // 检查依赖插件是否已激活
        if (!is_plugin_active($required_plugin)) {
            // 终止激活流程,返回错误提示
            wp_die(
                __('抱歉,本插件需要先激活WooCommerce才能使用。', 'your-plugin-text-domain'),
                __('激活失败', 'your-plugin-text-domain'),
                ['back_link' => true]
            );
        }
    }
}

二、在插件列表行显示依赖提示(无论是否激活)

使用after_plugin_row钩子,在当前插件的列表行下方添加警告通知,替代仅激活后才显示的plugin_row_meta:

add_action('after_plugin_row_' . plugin_basename(__FILE__), 'my_plugin_show_dependency_notice', 10, 3);
function my_plugin_show_dependency_notice($plugin_file, $plugin_data, $status) {
    $required_plugin = 'woocommerce/woocommerce.php';

    // 依赖未激活时显示警告
    if (!is_plugin_active($required_plugin)) {
        echo '<tr class="plugin-update-tr"><td colspan="3" class="plugin-update colspanchange">';
        echo '<div class="update-message notice inline notice-warning notice-alt">';
        echo __('警告:本插件需要激活WooCommerce才能正常使用,请先安装并激活WooCommerce。', 'your-plugin-text-domain');
        echo '</div></td></tr>';
    }
}

三、使用说明

  1. 将上述代码直接粘贴到你的插件主PHP文件中(比如my-custom-plugin.php)。
  2. 替换your-plugin-text-domain为你插件的专属文本域,用于多语言适配。
  3. 若依赖其他插件,修改$required_plugin的值为对应插件的主文件路径(格式:插件目录名/主文件名.php)。

内容的提问来源于stack exchange,提问作者Mrtgr33

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:53:13