移除WordPress菜单中指定插件的访问权限求助
解决WordPress隐藏Qi Addons for Elementor后台菜单问题
原代码失效原因
- 钩子时机过早:
admin_menu默认优先级为10,多数插件会在之后注册子菜单,导致你的代码执行时目标菜单尚未生成 - 判断条件错误:你用插件文件路径匹配
$menu_item[2],但该字段实际存储的是菜单slug,而非插件文件路径
解决方案分两种场景
场景1:隐藏插件列表中的「设置」链接(plugins.php页面内)
先通过调试获取目标slug:
// 临时添加,用于查看plugins.php的子菜单结构 function debug_plugin_submenus() { global $submenu; if (isset($submenu['plugins.php'])) { echo '<pre>'; print_r($submenu['plugins.php']); echo '</pre>'; } } add_action('admin_menu', 'debug_plugin_submenus', 999);
登录后台插件页面,找到Qi Addons对应的条目,复制$item[2]的值(例如qi-addons-for-elementor-settings),替换到以下代码:
function hide_qi_addons_plugin_settings_link() { global $submenu; // 替换为你调试得到的slug $target_slug = 'qi-addons-for-elementor-settings'; if (isset($submenu['plugins.php'])) { foreach ($submenu['plugins.php'] as $index => $menu_item) { if ($menu_item[2] === $target_slug) { unset($submenu['plugins.php'][$index]); break; } } } } // 高优先级确保在插件注册菜单后执行 add_action('admin_menu', 'hide_qi_addons_plugin_settings_link', 999);
场景2:隐藏左侧顶级菜单(如「Qi Addons」入口)
确认顶级菜单slug(通常为qi-addons-for-elementor),使用以下代码:
function hide_qi_addons_top_menu() { global $menu; // 替换为目标菜单的slug $target_slug = 'qi-addons-for-elementor'; foreach ($menu as $index => $menu_item) { if ($menu_item[2] === $target_slug) { unset($menu[$index]); break; } } } add_action('admin_menu', 'hide_qi_addons_top_menu', 999);
内容的提问来源于stack exchange,提问作者Larson
相关产品推荐
相关产品推荐

