wp_initial_nav_menu_meta_boxes()
云策文档标注
概述
wp_initial_nav_menu_meta_boxes() 函数用于限制首次使用 WordPress 导航菜单编辑器的用户可见的元框数量,仅显示页面、文章、链接和分类相关元框,以简化界面。
关键要点
- 函数检查用户是否已设置 metaboxhidden_nav-menus 选项,若已设置或 $wp_meta_boxes 非数组则直接返回。
- 定义初始元框数组 $initial_meta_boxes,包含 'add-post-type-page'、'add-post-type-post'、'add-custom-links' 和 'add-category'。
- 遍历 $wp_meta_boxes['nav-menus'] 结构,将非初始元框的 ID 收集到 $hidden_meta_boxes 数组中。
- 使用 wp_get_current_user() 获取当前用户对象,并通过 update_user_meta() 更新用户元数据,隐藏非初始元框。
代码示例
function wp_initial_nav_menu_meta_boxes() {
global $wp_meta_boxes;
if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array( $wp_meta_boxes ) ) {
return;
}
$initial_meta_boxes = array( 'add-post-type-page', 'add-post-type-post', 'add-custom-links', 'add-category' );
$hidden_meta_boxes = array();
foreach ( array_keys( $wp_meta_boxes['nav-menus'] ) as $context ) {
foreach ( array_keys( $wp_meta_boxes['nav-menus'][ $context ] ) as $priority ) {
foreach ( $wp_meta_boxes['nav-menus'][ $context ][ $priority ] as $box ) {
if ( in_array( $box['id'], $initial_meta_boxes, true ) ) {
unset( $box['id'] );
} else {
$hidden_meta_boxes[] = $box['id'];
}
}
}
}
$user = wp_get_current_user();
update_user_meta( $user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes );
}注意事项
- 此函数仅在用户首次使用导航菜单编辑器时执行,通过检查 metaboxhidden_nav-menus 选项避免重复隐藏元框。
- 隐藏的元框 ID 存储在用户元数据中,用户后续可以自定义显示或隐藏元框。
- 函数依赖于全局变量 $wp_meta_boxes,确保在正确上下文中调用。
原文内容
Limit the amount of meta boxes to pages, posts, links, and categories for first time users.
Source
function wp_initial_nav_menu_meta_boxes() {
global $wp_meta_boxes;
if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array( $wp_meta_boxes ) ) {
return;
}
$initial_meta_boxes = array( 'add-post-type-page', 'add-post-type-post', 'add-custom-links', 'add-category' );
$hidden_meta_boxes = array();
foreach ( array_keys( $wp_meta_boxes['nav-menus'] ) as $context ) {
foreach ( array_keys( $wp_meta_boxes['nav-menus'][ $context ] ) as $priority ) {
foreach ( $wp_meta_boxes['nav-menus'][ $context ][ $priority ] as $box ) {
if ( in_array( $box['id'], $initial_meta_boxes, true ) ) {
unset( $box['id'] );
} else {
$hidden_meta_boxes[] = $box['id'];
}
}
}
}
$user = wp_get_current_user();
update_user_meta( $user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes );
}
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |