Skip to content

Всё для WordPress, веб-разработки — и не только

🔗 Как добавить ссылку на главную в меню WordPress

🔗 Как добавить ссылку на главную в меню WordPress

Меню навигации без ссылки на главную, как входная дверь без ручки. Посетитель заходит на внутреннюю страницу через поиск, читает материал... и не понимает, куда нажать, чтобы попасть на главную. Логотип в хедере спасает не всегда, часть пользователей инстинктивно ищет пункт «Главная» именно в меню.

До версии 3.0 WordPress такой опции в стандартном редакторе меню не было, приходилось либо править код, либо добавлять произвольную ссылку вручную. Сейчас всё проще: пара кликов, и домашняя ссылка на месте. А если вы разработчик или кастомизируете тему, есть фильтр wp_nav_menu_items, который решает задачу одной функцией.

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

💡 Быстрый обзор:

  • Добавить домашнюю ссылку в меню WordPress через админ-панель за минуту без плагинов.
  • Добавить ссылку программно через фильтр wp_nav_menu_items в functions.php темы.
  • Проверить и обновить URL после смены домена или перехода на HTTPS.

Способ 1: Через админ-панель WordPress

Этот метод работает с WordPress 3.0 и выше, то есть на любом современном сайте. Никаких плагинов или правок кода не требуется.

Зайдите в админ-панель и перейдите по пути «Внешний вид» → «Меню». Слева вы увидите блоки: «Страницы», «Записи», «Произвольные ссылки» и другие, в зависимости от установленных плагинов и типов контента.

В блоке «Страницы» нажмите вкладку «Все» (или «Просмотреть всё» в старых версиях). Самой первой строкой идёт страница с названием «Главная» (или «Home», если у вас английская версия). Отметьте её галочкой и нажмите кнопку «Добавить в меню».

Блок страниц в редакторе меню WordPress с пунктом Главная

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

WordPress по умолчанию использует для этого пункта прямой URL главной страницы (например, https://vash-sait.ru/). Это важно помнить: если вы позже перенесёте сайт на другой домен или переключитесь с HTTP на HTTPS, ссылка останется старой. Придётся зайти в редактор меню и поправить URL вручную, либо удалить пункт и добавить заново (WordPress сам подставит актуальный адрес).

Способ 2: Программное добавление через фильтр

Если вы разрабатываете кастомную тему или хотите, чтобы домашняя ссылка добавлялась автоматически при активации темы, используйте фильтр wp_nav_menu_items. Он перехватывает HTML-код пунктов меню перед выводом и позволяет вставить свой элемент.

Код размещается в functions.php активной темы (или дочерней темы, чтобы не потерять правки при обновлении). Альтернативный вариант, плагин Code Snippets: вы создаёте сниппет, вставляете код и активируете, правки не зависят от темы.

Страница плагина Code Snippets в WordPress
1/**
2 * Добавляет ссылку «Главная» в основное меню WordPress.
3 *
4 * @param string $items HTML-разметка пунктов меню.
5 * @param object $args Аргументы wp_nav_menu().
6 * @return string
7 */
8function sdstudio_add_menu_home_link( $items, $args ) {
9 // Целевая область меню — замените 'main' на своё значение
10 if ( 'main' !== $args->theme_location ) {
11 return $items;
12 }
13
14 $home_link = sprintf(
15 '<li class="menu-item"><a href="%s">%s</a></li>',
16 esc_url( home_url( '/' ) ),
17 esc_html__( 'Главная', 'textdomain' )
18 );
19
20 // Ссылка добавляется первой — поставьте $items . $home_link, если нужна последней
21 $items = $home_link . $items;
22
23 return $items;
24}
25add_filter( 'wp_nav_menu_items', 'sdstudio_add_menu_home_link', 10, 2 );

Ключевой параметр, 'main' в условии if. Это slug области меню (theme location), который регистрируется функцией register_nav_menu() в теме. Узнать свой slug можно в файле functions.php темы, найдите вызов register_nav_menu() или register_nav_menus() и посмотрите первый аргумент. Чаще всего это primary или main.

Функция безопасна: esc_url() экранирует URL, а esc_html__(), текст ссылки с поддержкой перевода. Если вы используете дочернюю тему, замените 'textdomain' на текстовый домен вашей темы.

После вставки кода обновите сайт, домашняя ссылка появится в меню автоматически. Удалять её вручную не нужно: достаточно закомментировать или убрать add_filter(), и всё вернётся к исходному виду.

Ситуации, когда ссылку нужно обновлять

Домашняя ссылка, добавленная через админ-панель, хранит жёсткий URL, тот, что был в настройках сайта на момент добавления. Три типовых сценария, когда она ломается:

  • Переезд с HTTP на HTTPS. Пункт меню продолжает вести на http://..., браузеры могут показать предупреждение о смешанном контенте или редирект сломается. Решение: зайти в редактор меню, удалить старый пункт «Главная» и добавить заново, WordPress подставит актуальный https:// URL.

  • Смена домена. При переносе сайта с dev-окружения на продакшен (staging.site.rusite.ru) или полном переезде на новый домен. Пункт меню сохраняет старый URL. Решение, то же: удалить и добавить заново.

  • Перенос из подкаталога в корень. Если сайт переезжает из site.ru/blog/ в site.ru/, все жёсткие ссылки ломаются. После переноса пройдите по ВСЕМ пунктам меню, а не только по домашней ссылке.

Программный способ (через wp_nav_menu_items) этих проблем лишён: home_url('/') всегда возвращает актуальный адрес главной страницы из настроек WordPress.

Кстати, если вы активно работаете с меню, загляните в настройки навигации в разделе «Внешний вид» → «Настроить», там можно управлять меню в реальном времени с превью. А для продвинутых правок (добавление иконок к пунктам, мега-меню) пригодятся отдельные инструменты, но это уже тема для другого материала.

Видео: добавление домашней кнопки за 2 минуты

Если удобнее смотреть, а не читать, вот короткое англоязычное видео с пошаговым показом экрана:

⁉️🤔 Частые вопросы

Можно ли добавить домашнюю ссылку без плагинов и кода?

Да, через стандартный редактор меню WordPress: «Внешний вид» → «Меню» → блок «Страницы» → отметить «Главная» → «Добавить в меню». Это базовый функционал ядра, доступный с версии 3.0.

Почему после смены темы домашняя ссылка исчезла из меню?

Меню в WordPress привязаны к областям меню (theme locations), которые регистрирует тема. При смене темы старые области исчезают, а новые могут называться иначе. Ваше меню никуда не делось, оно просто «отвязалось». Зайдите в «Внешний вид» → «Меню» → вкладка «Управление областями» и назначьте существующее меню на область новой темы. Все пункты, включая домашнюю ссылку, вернутся.

В меню уже есть пункт «Главная», но он ведёт на какую-то конкретную страницу, а не на корень сайта. Как исправить?

Скорее всего, в меню добавлена конкретная страница с заголовком «Главная», а не специальный тип «Главная страница». Удалите этот пункт из меню, затем в блоке «Страницы» найдите запись с меткой «Главная страница» (WordPress помечает её особо) и добавьте её. Если метки нет, добавьте пункт через «Произвольные ссылки»: в поле URL введите /, в поле «Текст ссылки» пропишите «Главная».

Как добавить домашнюю ссылку не первой, а последней в меню?

В программном способе поменяйте порядок конкатенации: вместо $home_link . $items напишите $items . $home_link. В визуальном редакторе просто перетащите пункт «Главная» мышью в конец списка и сохраните меню.

Обязательно ли использовать esc_url() и home_url() в коде?

Да, это best practice WordPress. home_url('/') динамически подставляет актуальный адрес сайта из настроек, вам не придётся править код при смене домена. esc_url() экранирует спецсимволы и защищает от XSS-атак. Пропускать экранирование в production-коде рискованно.

Работает ли способ с кодом на мультисайтовой установке WordPress?

Да, home_url( '/' ) в мультисайте возвращает URL конкретного сайта сети, тот, что указан в настройках этого под-сайта. Для каждого сайта в сети домашняя ссылка будет своя. Если вам нужно разное поведение для разных сайтов, оберните add_filter() в условие проверки ID блога через get_current_blog_id().

Что делать, если домашняя ссылка не появляется?

Сначала проверьте очевидное: точно ли вы сохранили меню после добавления пункта? Кнопка «Сохранить меню» внизу страницы, без неё изменения не применяются. Если меню сохранено, а пункта нет, откройте сайт в режиме инкогнито (кеш браузера иногда скрывает свежие правки).

Вторая вероятная причина, кеширующий плагин (WP Rocket, W3 Total Cache, LiteSpeed Cache). Сбросьте кеш через админ-панель плагина и проверьте сайт заново.

Если не помогло, на минуту переключите тему на стандартную (Twenty Twenty-Five или Twenty Twenty-Six). Пункт появился? Значит, проблема в кастомной теме, её функция wp_nav_menu() может быть переопределена с обрезанием фильтров. Проверьте вызов wp_nav_menu() в шаблоне темы: аргумент 'items_wrap' не должен быть пустой строкой, а 'fallback_cb' должен быть false только если вы осознанно отключаете fallback.

Код из «Способа 2» при правильном theme_location отрабатывает на любой теме, это страховка на случай, если визуальный метод по какой-то причине не срабатывает.

Домашняя ссылка в меню, мелочь, которая работает на доверие. Посетитель, попавший на внутреннюю страницу из поиска, за доли секунды находит путь к началу сайта и идёт изучать дальше. Без неё часть аудитории просто закроет вкладку. Две минуты в редакторе меню или десять строк кода, и эта точка входа больше не теряется.