Добавление в тему WordPress поддержки создания произвольных меню

В WordPress 3.0 появилась функциональность создания меню, которая позволяет добавлять в темы  WordPress любое количество произвольных меню. Рассмотрим, как и куда добавить три меню.

Произвольные и дефолтные меню

Произвольные меню (Native Menu) добавляются на сайт в разделе
Внешний вид>Меню
и могут включать рубрики (Categories), постоянные страницы (Pages), а также произвольные ссылки.

Обычно в теме имеется возможность добавления одного такого меню, но это не предел, и меню можно добавлять в любое место: выше и ниже заголовка и/или в подвал (footer). Например, это может быть верхнее меню постоянных страниц (Top Pages Menu), верхнее меню рубрик (Top Categories Menu) и меню ссылок внизу страницы (Footer Link Menu). Имя области темы для меню должно говорить о месте расположения этого меню .

На случай, если пользователь не будет активировать произвольное меню, желательно добавить возможность использования традиционного меню, используемого по умолчанию, т.е. обеспечить обратную совместимость.

1: Регистрация меню

В файл темы functions.php добавим код регистрации трех меню:

add_action('init', 'register_nav_menus_on_init');

function register_nav_menus_on_init() {
	register_nav_menus(array(
		'top-pages-menu' => 'Top Pages Menu',
		'top-cat-menu' => 'Top Categories Menu',
		'footer-link-menu' => 'Footer Link Menu',
	));
}

2: Добавление областей меню в тему

Два верхних меню добавляем в файл header.php:

 <div class="pages-nav">
	<?php wp_nav_menu( array( 'theme_location' => 'top-pages-menu' ) ); ?>
</div>

....

<div class="cats-nav">
	<?php wp_nav_menu( array( 'theme_location' => 'top-cats-menu' ) ); ?>
</div>

Функции wp_nav_menu() передается имя зарегистрированного меню. Если меню активировано, эта функция добавляет для меню теги <ul> и<li>.

Третье меню добавляем в файл footer.php:

<div class="footer-nav">
	<?php wp_nav_menu( array( 'theme_location' => 'footer-links-menu' ) ); ?>
</div>

3: Традиционное меню (Обратная совместимость)

Дефолтное, традиционное меню будет выводиться, если в данной области меню не активировано произвольное меню. Изменяем файл header.php:

 
<div class="pages-nav">
	<?php
	if (has_nav_menu('top-pages-menu')) {
		wp_nav_menu( array( 'theme_location' => 'top-pages-menu' ) );
	} else {
		wp_list_pages();
	}
	?>
</div>

....

<div class="cats-nav">
	<?php
	if (has_nav_menu('top-cats-menu')) {
		wp_nav_menu( array( 'theme_location' => 'top-cats-menu' ) );
	} else {
		wp_list_categories();
	}
	?>
</div>

В файле footer.php - аналогично.

Функции WordPress:
wp_nav_menu() – вывод произвольного меню
has_nav_menu( name ) – проверяет, было ли меню “name” активировано
register_nav_menus() - регистрация меню
Источник (Add WordPress Native Menu Feature to WordPress Themes)

Опубликовано в рубрике Создание и изменение темы | с метками . |

Еще записи

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *