2015-02-27 1 views
0

Могу ли я использовать следующий скрипт для создания моего основного меню, которое включает в себя элементы многих других меню?Создание большого меню, которое объединяет многие другие меню

Пример: мое главное меню выглядит следующим образом -

-1 
--1.1 
--1.2 
-2 

и у меня есть много других меню с ID = (1,1, 1,2, ......), так что при строительстве на веб-странице меню так ли должен сочетать все соответствующие меню. Результат должен быть таким:

-1 
--1.1 
---items from menu id 1.1 
--1.2 
---items from menu id 1.2 
-2 
and so on. 

Вот код, который у меня есть -

// Get the nav menu based on $menu_name (same as 'theme_location' or 'menu' arg to wp_nav_menu) 
// This code based on wp_nav_menu's code to get Menu ID from menu slug 

$menu_name = 'custom_menu_slug'; 

if (($locations = get_nav_menu_locations()) && isset($locations[ $menu_name ])) { 
$menu = wp_get_nav_menu_object($locations[ $menu_name ]); 

$menu_items = wp_get_nav_menu_items($menu->term_id); 

$menu_list = '<ul id="menu-' . $menu_name . '">'; 

foreach ((array) $menu_items as $key => $menu_item) { 
    $title = $menu_item->title; 
    $url = $menu_item->url; 
    $menu_list .= '<li><a href="' . $url . '">' . $title . '</a></li>'; 
} 
$menu_list .= '</ul>'; 
} else { 
$menu_list = '<ul><li>Menu "' . $menu_name . '" not defined.</li></ul>'; 
} 
// $menu_list now ready to output 
source - http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items 

Моя цель состоит в том, чтобы разбить большое меню на более мелкие, а затем строить их на своих страницах.

ответ

0

С самого первого взгляда это кажется трудной работой, но на самом деле я даже имея небольшие навыки PHP может решить эту проблему, просто добавив следующий код в мой пользовательский ходунки класс:

if ($depth == 1) { // remove this statement if depth check is not required 
    if (wp_get_nav_menu_object($item->title)) {// checking if item name matches to menu name 
    $item_output .= wp_nav_menu(array('menu' => $item->title, 'container_class' => 'mgmenu_tabs_panels', 'menu_class' => '', 'menu_id' => 'section'. $item->ID, 'echo' => 0)); 
    } 
} 

так просто , Этот скрипт будет проверять, соответствует ли какое-либо созданное имя меню подменю имени подменю, и когда они соответствуют сценарию, будут добавлены все элементы из этого подходящего меню.

В основном этот скрипт позволяет разделить любое большое меню на многие более мелкие.

Смежные вопросы