use*_*824 1 php wordpress wordpress-theming
参考函数 wp_get_nav_menu_items() https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/#
它返回一个对象,其中包含给定菜单的所有菜单项(包括子菜单项),按照它们在仪表板上的排列顺序。它不会将子菜单项与其父项分组,这可能会使创建您自己的菜单有点困难。有没有一种方法可以排列对象,以便子项分组在其父项的数组内?
// wordpress does not group child menu items with parent menu items
$menuLocations = get_nav_menu_locations();
$navbar_items = wp_get_nav_menu_items($menuLocations['Navbar']);
$child_items = [];
// pull all child menu items into separate object
foreach ($navbar_items as $key => $item) {
if ($item->menu_item_parent) {
array_push($child_items, $item);
unset($navbar_items[$key]);
}
}
// push child items into their parent item in the original object
foreach ($navbar_items as $item) {
foreach ($child_items as $key => $child) {
if ($child->menu_item_parent == $item->post_name) {
if (!$item->child_items) {
$item->child_items = [];
}
array_push($item->child_items, $child);
unset($child_items[$key]);
}
}
}
// return navbar object where child items are grouped with parents
return $navbar_items;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7302 次 |
| 最近记录: |