显示 WordPress 后台主菜单和子菜单结构
› VFX大学 › wordpress开发 › 显示 WordPress 后台主菜单和子菜单结构
- This topic has 0 个回复, 1 个参与人, and was last updated 1 天, 1 小时 前 by
追光.
- 作者帖子
- 2025年7月10日 - 下午6:29 #392
追光管理员详细讲解这两段代码的用途、作用,以及它们输出格式的意义和实用场景。
1. 显示 WordPress 后台主菜单和子菜单结构
add_action('admin_menu', function() { global $menu, $submenu; echo '<pre style="background:#fff;color:#000;z-index:9999999;position:relative;">'; echo "=== 主菜单(\$menu) ===\n"; foreach ($menu as $item) { echo "菜单名: {$item[0]} | slug: {$item[2]}\n"; } echo "\n=== 子菜单(\$submenu) ===\n"; foreach ($submenu as $parent => $items) { echo "父菜单 slug: {$parent}\n"; foreach ($items as $subitem) { echo " 子菜单名: {$subitem[0]} | slug: {$subitem[2]}\n"; } } echo '</pre>'; });
用途和作用
目的:这个代码会在 WordPress 后台加载菜单时,将所有的**主菜单($menu)和子菜单($submenu)**信息打印输出出来,方便开发者查看当前所有的菜单结构。
$menu 是一个全局数组,包含 WordPress 后台左侧主菜单的所有菜单项。每个菜单项是一个数组,里面包含:
菜单名称(第0位)
访问权限要求
菜单的slug(第2位,用于 URL 参数)
其他项(图标,位置等)
$submenu 是一个关联数组,键为主菜单的 slug,值为该菜单下所有子菜单项的数组。每个子菜单项结构类似,也包含菜单名和 slug。
打印信息帮助你快速知道:
现有的菜单有哪些
它们对应的 slug 是什么(slug 很重要,通常用来添加子菜单或权限判断)
父子菜单的层级关系
输出格式
示例输出:
=== 主菜单($menu) === 菜单名: 仪表盘 | slug: index.php 菜单名: 文章 | slug: edit.php 菜单名: 媒体 | slug: upload.php === 子菜单($submenu) === 父菜单 slug: index.php 子菜单名: 仪表盘首页 | slug: index.php 子菜单名: 更新 | slug: update-core.php 父菜单 slug: edit.php 子菜单名: 所有文章 | slug: edit.php 子菜单名: 新建文章 | slug: post-new.php
适用场景
插件或主题开发者想查看或调试后台菜单结构时,快速定位菜单 slug,便于增删改菜单。
权限管理或条件判断:知道具体菜单 slug 方便基于它们做访问权限控制。
后台定制:为特定菜单添加自定义子菜单,或隐藏某些菜单。
2. 打印 WordPress 元盒(Meta Boxes)结构
add_action('add_meta_boxes', function( $post_type ) { global $wp_meta_boxes; echo '<pre>'; print_r( $wp_meta_boxes[$post_type] ); echo '</pre>'; }, 100);
用途和作用
目的:这段代码会在 WordPress 加载编辑页面时,输出当前 $post_type(文章类型)对应的所有 Meta Boxes(元盒) 的结构信息。
Meta Boxes 是 WordPress 编辑器页面中的小模块,比如发布按钮模块、分类选择模块、特色图片模块、标签模块等等。
$wp_meta_boxes 是一个全局数组,包含所有已注册的 Meta Box,按文章类型、显示位置、优先级等层级组织。
通过打印 $wp_meta_boxes[$post_type],你能看到所有该文章类型(post, page, 自定义文章类型)的元盒详情,包括:
id:元盒唯一标识
title:元盒标题
callback:负责渲染这个盒子的函数
args:额外参数
所属位置(side, normal, advanced)
优先级(high, core, default)
输出格式举例
Array ( [side] => Array ( [core] => Array ( [submitdiv] => Array ( [id] => submitdiv [title] => 发布 [callback] => post_submit_meta_box [args] => Array ( [__back_compat_meta_box] => 1 ) ) [formatdiv] => Array ( [id] => formatdiv [title] => 形式 [callback] => post_format_meta_box [args] => Array() ) ) ) )
适用场景
开发自定义编辑界面:了解和调试已有的元盒,知道它们的 id 和回调函数,方便你修改、替换或者扩展功能。
移除、隐藏或重新排序元盒:比如你想隐藏“发布”按钮盒子,或者添加新的自定义元盒。
调试自定义文章类型的编辑页面,确认哪些元盒被注册。
总结
代码作用
适用场景
价值
打印后台菜单结构
后台菜单调试、定制菜单或权限管理
快速获取菜单slug及层级关系,方便定制菜单
打印编辑页面元盒结构
自定义编辑页面、调试元盒布局
查看所有元盒详细信息,便于隐藏、修改或扩展
提示
这些打印输出代码最好只在开发环境或调试时使用,生产环境要关闭,否则会影响后台体验。
可以用 error_log(print_r(…, true)) 或 WP-CLI 调试,避免直接输出页面干扰。
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。