Идея заключается в том, чтобы добавить начало любого меню, в основном это меню в шапке сайта, ссылку на главную страницу. Многие могут сказать, что в этом нет ничего сложного, нужно просто в админке, в меню добавить произвольную ссылку, которую и сделать ссылкой на главную. Что тут сложного то? В таком способе ничего, но у него есть один маленький минус - циклическая ссылка.
Циклическая ссылка - это ссылка, которая ведет посетителя страницы что на нее нажал, на ту же самую страницу. То есть замкнутый круг. При нажатии на ссылку, вы опять попадете на ту же страницу на которой были.
Такие ссылки не очень полезны, если вы занимаетесь оптимизацией своего сайта. А появляются они, если просто добавить произвольную ссылку, потому, что на главной странице - пункт меню ГЛАВНАЯ, всеравно будет отображаться. Ведь даже по логике это не правильно. Зачем на главной странице ссылка на главную? Именно для решения этой задачи и понадобится тот материал, что я опишу снизу.
В итоге задача стоит в том, что ссылка на главную должна присутствовать на всех страницах кроме главной. То есть, автоматически исчезать из меню, когда посетитель сайта находится на главной странице. Теперь перейдем от теории к практики.
Чаще всего меню располагается в шапке сайта, а именно в файле - header.php. У вас может быть в другом, если вы занимаетесь своей темой, то должны знать, если нет, то придется поискать. Код отвечающий за вывод меню. чаще всего выглядит примерно так:
<?php wp_nav_menu( array( 'theme_location' => 'top-menu' ) ); ?>
В моем примере, меню имеет название - top-menu, у вас оно может иметь совсем другое название. Его нужно сохранить, запомнить, оно нам пригодится.
Вам нужно этот код меню заменить новым:
<?php $args = array('theme_location' => 'top-menu','echo' => 0 ); $menu = wp_nav_menu( $args ); if(!is_front_page()) $menu = preg_replace('~<li~', '<li><a href="'.home_url().'" title="На главную">Главная</a></li><li', $menu, 1 ); echo $menu; ?>
Давайте разберем наш код, каков принцип его работы и за что отвечают его строки.
- $args = array('theme_location' => 'top-menu','echo' => 0 ); - настраиваем наш массив. Указывая, какое меню мы будем использовать. Как видите, мы указали все то же top-menu.
- $menu = wp_nav_menu( $args ); - далее мы создаем переменную $menu, которой присваиваем функцию вывода меню wp_nav_menu, для которой мы и настраивали массив $args.
- if(!is_front_page()) - добавляем условие, которое устанавливает правило - Если это не главная страница, то....
- 4 строка - вновь задается переменная $menu, которая настраивается следующим образом. С помощью preg_replace - выполняем поиск и замену. Таким образом, в наше меню, что является по сути UL списком, первой строкой добавляем новую:
<li><a href="'.home_url().'" title="На главную">Главная</a></li>
Эта строка и есть ссылкой на главную. С помощью функции home_url() и формируется ссылка. Можете изменить название ссылки - Главная на свое. - echo $menu; - вывод нашей переменной $menu. Эта строка, в зависимости от условия и выводит нам на главной странице стандартное меню, заданное во второй строке кода. Или если это любая внутренняя страница, то сработает уже переменная заданная в 4 строке кода.
Для тех, кто открыл для себя WordPress не вчера, сложного ничего не будет. Все довольно просто и понятно. При наличии прямых рук и хорошей фантазии, можно применить данный код для добавления в меню других ссылок. Указать другое условие и тд.
Лично я очень часто пользуюсь данным методом, который мне помогает при построении тем. Надеюсь он поможет и вам в вашей работе по созданию и оптимизации тем для WordPress.
На этом все, спасибо за внимание. 🙂