如何隐藏WordPress后台菜单中第4个无CSS类的<li>元素
如何隐藏WordPress后台Media子菜单中的「Converter for Media」选项
一、CSS方法(视觉隐藏)
错误原因分析
你之前的CSS选择器目标错误:wp-submenu和wp-submenu-wrap是父级<ul>的类,并非<li>的类,导致选择器无法匹配到目标元素。
正确代码
/* 匹配Media子菜单下的第4个li元素 */ .wp-submenu.wp-submenu-wrap li:nth-child(4) { display: none !important; }
如果担心样式优先级被WordPress默认样式覆盖,可以进一步限定上下文,避免影响其他子菜单:
/* 仅针对Media顶级菜单下的子菜单 */ .menu-top.toplevel_page_upload .wp-submenu-wrap li:nth-child(4) { display: none !important; }
注意:CSS方法仅实现视觉隐藏,若用户知晓对应URL仍可直接访问。
二、PHP方法(从菜单结构移除,更安全)
错误原因分析
- 误用函数:
remove_menu_page()用于移除顶级菜单,目标是Media下的子菜单,应使用remove_submenu_page()。 - 钩子时机错误:
admin_init钩子触发过早,菜单尚未完成初始化,需使用admin_menu钩子。 - 参数错误:需传入URL中
page参数的准确值(即webpc_optimization_page)。
正确代码
add_action( 'admin_menu', 'hide_media_submenu_item' ); function hide_media_submenu_item() { // 仅对非管理员用户隐藏(默认管理员用户ID为1) if ( get_current_user_id() !== 1 ) { // 第一个参数:顶级菜单slug(Media对应的slug是upload.php) // 第二个参数:子菜单的page参数值 remove_submenu_page( 'upload.php', 'webpc_optimization_page' ); } }
优势:直接从后台菜单结构中移除,用户无法通过菜单入口访问,配合插件自身权限控制可彻底限制访问。
内容的提问来源于stack exchange,提问作者Meng888
相关产品推荐
相关产品推荐

