wp_nav_mеnu(), создание пользовательских меню

Использование меню такого типа очень удобно, особенно если делаешь сайт для заказчиков. Конечно, можно вывести рубрики при помощи wp_list_categories или вообще написать на HTML (лично я всегда так и делаю, когда создаю сайт для себя), но будет нудно, если пункты меню будут часто меняться и дополняться.

Для начала нужно включить поддержку меню темой, вставив этот код в файл functions.php:

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

А это более правильный вариант с регистрацией областей темы:

if(function_exists('register_nav_menus')){
    register_nav_menus(
        array( // создаём любое количество областей
          'main_menu' => 'Главное меню', // 'имя' => 'описание'
          'foot_menu' => 'Меню в футере'
        )
    );
}

После этого в админке появится вкладка Внешний вид > Меню. Заходим туда и создаём своё меню, назовём его например «menu1».

Засуньте этот код в то место в теме, куда вы хотите вставить менюху:

<?php wp_nav_menu("menu=menu1"); ?>

Точно так же можно насоздавать ещё кучу менюшек, указывая в скобках их названия. Это был примитивный пример.

Итак, функция wp_nav_menu()

wp_nav_menu($args);

Параметры по умолчанию:

$args = array(
    'theme_location'  => , // область темы
    'menu'            => , // какое меню нужно вставить (по порядку: id, ярлык, имя)
    'container'       => 'div', // блок, в который нужно поместить меню, укажите false, чтобы не помещать в блок
    'container_class' => 'menu-{menu slug}-container', // css-класс блока
    'container_id'    => , // id блока
    'menu_class'      => 'menu', // css-класс меню
    'menu_id'         => , // id меню
    'echo'            => true, // вывести или записать в переменную
    'fallback_cb'     => 'wp_page_menu', // какую функцию использовать если меню не существует, укажите false, чтобы не использовать ничего
    'before'          => , // текст или html-код, который нужно вставить перед каждым <a>
    'after'           => , // после </a>
    'link_before'     => , // текст перед анкором ссылки
    'link_after'      => , // после анкора и перед </a>
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>', // HTML-шаблон
    'depth'           => 0 // количество уровней вложенности
);

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: