Я работаю на этом сайте здесь: http://new.leicesterymca.co.uk/youth-community/our-work/Показывать только меню третьего уровня Wordpress
На этой странице вы увидите меня в меню 1-го уровня в верхней части, то я PHP код говоря, если есть второй затем отобразите меню 2-го уровня в синей полосе.
Но теперь мне нужно то же самое для меню 3-го уровня (слева от страницы). Так что, по сути, мне нужен код, чтобы увидеть, есть ли какие-либо страницы третьего уровня, если это так, то здесь отображаются страницы третьего уровня. Код у меня есть для второго уровня:
<?php
$menu = wp_nav_menu(
array (
'theme_location' => 'header-menu',
'sub_menu' => true,
'echo' => FALSE,
'fallback_cb' => '__return_false'
)
);
if (! empty ($menu))
{
echo '<div class="sub-nav-container-full">
<div class="container">
<div class="sub-page-menu">';
echo $menu;
echo '</div></div></div>';
}
?>
Итак, я предполагаю, что я могу использовать подобный код, но я не знаю, как направить его только на 3-м уровне?
Если бы кто-нибудь мог помочь, это было бы здорово! :)
Спасибо, Шон.
EXTRA - У меня тоже есть этот кусок кода в файле мои функции, если это помогает ...
// FUNCTION FOR SETTING UP SUB MENU PAGES
// add hook
add_filter('wp_nav_menu_objects', 'my_wp_nav_menu_objects_sub_menu', 10, 2);
// filter_hook function to react on sub_menu flag
function my_wp_nav_menu_objects_sub_menu($sorted_menu_items, $args) {
if (isset($args->sub_menu)) {
$root_id = 0;
// find the current menu item
foreach ($sorted_menu_items as $menu_item) {
if ($menu_item->current) {
// set the root id based on whether the current menu item has a parent or not
$root_id = ($menu_item->menu_item_parent) ? $menu_item->menu_item_parent : $menu_item->ID;
break;
}
}
// find the top level parent
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;
// don't set the root_id to 0 if we've reached the top of the menu
if ($prev_root_id != 0) $root_id = $menu_item->menu_item_parent;
break;
}
}
}
}
$menu_item_parents = array();
foreach ($sorted_menu_items as $key => $item) {
// init menu_item_parents
if ($item->ID == $root_id) $menu_item_parents[] = $item->ID;
if (in_array($item->menu_item_parent, $menu_item_parents)) {
// part of sub-tree: keep!
$menu_item_parents[] = $item->ID;
} else if (! (isset($args->show_parent) && in_array($item->ID, $menu_item_parents))) {
// not part of sub-tree: away with it!
unset($sorted_menu_items[$key]);
}
}
return $sorted_menu_items;
} else {
return $sorted_menu_items;
}
}
Другими словами, вы хотите, чтобы показать меню 3-го уровня, когда показал второй уровень/парил? – codiiv
Я так думаю - я хочу, чтобы меню третьего уровня было тем, кто в этой позиции (в левой части страницы), когда он есть, и когда вы нажали на родительское меню второго уровня .... Это имеет смысл? –