wp_nav_menu_taxonomy_meta_boxes()
云策文档标注
概述
wp_nav_menu_taxonomy_meta_boxes() 函数用于为所有支持在导航菜单中显示的 taxonomy 创建 meta box。它遍历符合条件的 taxonomy,并通过 add_meta_box() 在导航菜单管理界面添加相应的 meta box。
关键要点
- 函数通过 get_taxonomies() 获取 show_in_nav_menus 为 true 的 taxonomy 对象列表
- 使用 nav_menu_meta_box_object 过滤器允许修改 taxonomy 对象,控制是否添加 meta box
- 为每个 taxonomy 调用 add_meta_box(),指定回调函数为 wp_nav_menu_item_taxonomy_meta_box
- meta box 显示在 nav-menus 管理页面的侧边栏区域
代码示例
function wp_nav_menu_taxonomy_meta_boxes() {
$taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'object' );
if ( ! $taxonomies ) {
return;
}
foreach ( $taxonomies as $tax ) {
/** This filter is documented in wp-admin/includes/nav-menu.php */
$tax = apply_filters( 'nav_menu_meta_box_object', $tax );
if ( $tax ) {
$id = $tax->name;
add_meta_box(
"add-{$id}",
$tax->labels->name,
'wp_nav_menu_item_taxonomy_meta_box',
'nav-menus',
'side',
'default',
$tax
);
}
}
}注意事项
- 函数从 WordPress 3.0.0 版本引入
- 主要用于 wp_nav_menu_setup() 函数中,用于注册导航菜单的 meta box 和高级菜单项
- 相关函数包括 add_meta_box()、get_taxonomies() 和 apply_filters()
原文内容
Creates meta boxes for any taxonomy menu item.
Source
function wp_nav_menu_taxonomy_meta_boxes() {
$taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'object' );
if ( ! $taxonomies ) {
return;
}
foreach ( $taxonomies as $tax ) {
/** This filter is documented in wp-admin/includes/nav-menu.php */
$tax = apply_filters( 'nav_menu_meta_box_object', $tax );
if ( $tax ) {
$id = $tax->name;
add_meta_box(
"add-{$id}",
$tax->labels->name,
'wp_nav_menu_item_taxonomy_meta_box',
'nav-menus',
'side',
'default',
$tax
);
}
}
}
Hooks
- apply_filters( ‘nav_menu_meta_box_object’, WP_Post_Type|false $post_type )
-
Filters whether a menu items meta box will be added for the current object type.
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |