我有一个函数wp_nav_menu
显示当前查看页面的同级页面以及所有子页面。我需要对此进行修改,以仅显示特定页面的子页面,但我真的不明白这是如何工作的。我想做的是在wp_nav_menu
函数,并仅显示该页的子级。
这是我当前的函数:。
// add sub_menu options to wp_nav_menu
function my_wp_nav_menu_objects_sub_menu($sorted_menu_items, $args) {
if (isset($args->sub_menu)) {
$root_id = 0;
foreach ($sorted_menu_items as $menu_item) {
if ($menu_item->current) {
$root_id = ($menu_item->menu_item_parent) ? $menu_item->menu_item_parent : $menu_item->ID;
break;
}
}
if (!isset($args->direct_parent)) {
$prev_root_id = $root_id;
while ($prev_root_id != 0) {
foreach ($sorted_menu_items as $menu_item) {
if ($menu_item->ID == $prev_root_id) {
$prev_root_id = $menu_item->menu_item_parent;
if ($prev_root_id != 0) $root_id = $menu_item->menu_item_parent;
break;
}
}
}
}
$menu_item_parents = array();
foreach ($sorted_menu_items as $key => $item) {
if ($item->ID == $root_id) $menu_item_parents[] = $item->ID;
if (in_array($item->menu_item_parent, $menu_item_parents)) {
$menu_item_parents[] = $item->ID;
} else if (!( isset($args->show_parent) && in_array($item->ID, $menu_item_parents))) {
unset( $sorted_menu_items[$key]);
}
}
return $sorted_menu_items;
} else {
return $sorted_menu_items;
}
}
add_filter("wp_nav_menu_objects", "my_wp_nav_menu_objects_sub_menu", 10, 2);
下面是一个示例
wp_nav_menu
与it的关联:
wp_nav_menu(array(
"container" => "nav",
"depth" => 2,
"items_wrap" => "<ul>%3\\$s</ul>",
"sub_menu" => true,
"theme_location" => "primary",
));
任何帮助都将不胜感激。