如何让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>'; } }
三、使用说明
- 将上述代码直接粘贴到你的插件主PHP文件中(比如
my-custom-plugin.php)。 - 替换
your-plugin-text-domain为你插件的专属文本域,用于多语言适配。 - 若依赖其他插件,修改
$required_plugin的值为对应插件的主文件路径(格式:插件目录名/主文件名.php)。
内容的提问来源于stack exchange,提问作者Mrtgr33
相关产品推荐
相关产品推荐

