Создание и редактирование меню на WordPress

Содержание:

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

 Пользовательское меню для разных категорий и меток

Итак, задача: "выводить определённое меню в зависимости от рубрики  или присвоенной метки. Меню просто смотрим через исходный код страницы, копируем просто как html и вставляем в созданный файл menu.php. Данный файл забрасываем по FTP в папку с установленной темой.

В каждой теме по разному, предположим Вы скопировали такой исходный код:

<div id='cssmenu'>
<ul>
 <li><a href='index.html'><span>Home</span></a></li>
 <li><a href='#'><span>Products</span></a></li>
 <li><a href='#'><span>About</span></a></li>
 <li><a href='#'><span>Contact</span></a></li>
</ul>
</div>

 

 Сохранили в menu.php, скопировали в папку с темой. Почему туда? А очень просто. Теперь Вы можете видеть содержимое этого файла через админку в меню Внешний вид > Редактор рядом с файлами header.php, footer.php и т.д. А если присвоите файлу права 777, то можете даже редактировать его прямо из админки.

А вот теперь его надо вызывать вместо основного меню, если запись имеет определённую метку. Ищем где выводиться меню в теме (это к примеру header.php) вот такой код:

<?php {wp_nav_menu( array( 'theme_location' => 'primary-menu' ) ); } ?>

И вставляем такую конструкцию:

<?php if(has_tag('worpress'))
{
 include(TEMPLATEPATH.'/menu.php');}
else
{wp_nav_menu( array( 'theme_location' => 'primary-menu' ) ); }
?>

Т.е. если метка wordpress выведет наше меню, в остальных случаях - заданное по умолчанию. Естественно можно проверять по рубрике с помощью in category(), делать такую проверку многоуровневой и т.д.

к содержанию ↑

Подсветка текущей позиции в меню

Созданное нами меню будет отлично работать, но есть маленький недостаток - не подсвечивается ссылка в меню на текущую страницу или рубрику. Решить это можно вставив сразу после закрывающего тега div:

<script type="text/javascript"><!--
$('div.main-menu-css li').each(function () {if (this.getElementsByTagName("a")[0].href == location.href) this.className = "active";});
//--></script>

В этом случае код в menu.php радо подправить добавив класс  main-menu-css примерно так - div class="main-menu-css" id="cssmenu

Естественно в Вашем файле стилей должны быть классы  main-menu-css и active

 

 

 

Оставьте ответ

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