+7 (383) 375-22-01
RU EN

Произвольный вид произвольного меню

Доброго времени суток всем поклонникам чудесного движка WordPress! Сегодня речь пойдет о таком мощном инструменте как произвольное меню. Эта новая функция появилась не так давно, начиная с версии 3.0, и очень быстро набрала популярность у сайтоделов. Включить поддержку произвольных меню в вашей теме очень просто, надо в файл function.php добавить следующие строки:

if (function_exists('add_theme_support')) {
    add_theme_support('menus');
}

После чего, во вкладке Внешний вид, появится новый пункт меню, где все достаточно интуитивно понятно. За вызов меню в нужных местах шаблона отвечает функция wp_nav_menu(), которая поддается достаточно тонкой настройке, однако часто бывает так, что вывод меню должен существенно отличаться от предложенного ul списка. Например, пункты должны выводить внутри div блоков или к последнем пункту надо присвоить уникальный класс. Для этого мы предлагаем использовать свой собственный вариант вывода через добавление функции custom_menu() внетри function.php:


function custom_menu($menu_name) {

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

	$menu_list = '<ul id="menu">';
	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>';
        echo $menu_list;

}

Как видите, в данной функции можно легко менять html код вывода. А если необходимо добавить к определенному пункту уникальный класс, то добавим счетчик:

function custom_menu($menu_name) {

	$menu = wp_get_nav_menu_object($menu_name);
	$menu_items = wp_get_nav_menu_items($menu->term_id);
        $count = count($menu_items);
        $i = 0;

	$menu_list = '<ul id="menu">';
	foreach ( (array) $menu_items as $key => $menu_item ) {
            $i++; 
            if($i == $count){
               $class = " class='none'";
            } else {
               $class = "";
            }
	    $title = $menu_item->title;
	    $url = $menu_item->url;
	    $menu_list .= '<li'.$class.'><a href="' . $url . '">' . $title . '</a></li>';
	}
	$menu_list .= '</ul>';
        echo $menu_list;

}

Вызывается функция стандартным способом — с указанием названия меню в качестве аргумента, например

custom_menu("Верхнее меню");

Надеемся на полезность данной информации для вас. До новых встреч!