
🔗 Как добавить ссылку на главную в меню WordPress
Меню навигации без ссылки на главную, как входная дверь без ручки. Посетитель заходит на внутреннюю страницу через поиск, читает материал... и не понимает, куда нажать, чтобы попасть на главную. Логотип в хедере спасает не всегда, часть пользователей инстинктивно ищет пункт «Главная» именно в меню.
До версии 3.0 WordPress такой опции в стандартном редакторе меню не было, приходилось либо править код, либо добавлять произвольную ссылку вручную. Сейчас всё проще: пара кликов, и домашняя ссылка на месте. А если вы разработчик или кастомизируете тему, есть фильтр wp_nav_menu_items, который решает задачу одной функцией.
Ниже, оба способа: визуальный для обычного пользователя и программный для тех, кто работает с кодом. Плюс разберём, когда ссылку нужно обновлять и что делать, если она вдруг исчезла.
💡 Быстрый обзор:
- Добавить домашнюю ссылку в меню WordPress через админ-панель за минуту без плагинов.
- Добавить ссылку программно через фильтр wp_nav_menu_items в functions.php темы.
- Проверить и обновить URL после смены домена или перехода на HTTPS.
Способ 1: Через админ-панель WordPress
Этот метод работает с WordPress 3.0 и выше, то есть на любом современном сайте. Никаких плагинов или правок кода не требуется.
Зайдите в админ-панель и перейдите по пути «Внешний вид» → «Меню». Слева вы увидите блоки: «Страницы», «Записи», «Произвольные ссылки» и другие, в зависимости от установленных плагинов и типов контента.
В блоке «Страницы» нажмите вкладку «Все» (или «Просмотреть всё» в старых версиях). Самой первой строкой идёт страница с названием «Главная» (или «Home», если у вас английская версия). Отметьте её галочкой и нажмите кнопку «Добавить в меню».

После добавления пункт появится в структуре меню справа. Перетащите его в нужную позицию, обычно его ставят первым или последним элементом. Сохраните меню кнопкой «Сохранить меню», и домашняя ссылка заработает на сайте.
WordPress по умолчанию использует для этого пункта прямой URL главной страницы (например, https://vash-sait.ru/). Это важно помнить: если вы позже перенесёте сайт на другой домен или переключитесь с HTTP на HTTPS, ссылка останется старой. Придётся зайти в редактор меню и поправить URL вручную, либо удалить пункт и добавить заново (WordPress сам подставит актуальный адрес).
Способ 2: Программное добавление через фильтр
Если вы разрабатываете кастомную тему или хотите, чтобы домашняя ссылка добавлялась автоматически при активации темы, используйте фильтр wp_nav_menu_items. Он перехватывает HTML-код пунктов меню перед выводом и позволяет вставить свой элемент.
Код размещается в functions.php активной темы (или дочерней темы, чтобы не потерять правки при обновлении). Альтернативный вариант, плагин Code Snippets: вы создаёте сниппет, вставляете код и активируете, правки не зависят от темы.

1 /** 2 * Добавляет ссылку «Главная» в основное меню WordPress. 3 * 4 * @param string $items HTML-разметка пунктов меню. 5 * @param object $args Аргументы wp_nav_menu(). 6 * @return string 7 */ 8 function 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 } 25 add_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.ru→site.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 отрабатывает на любой теме, это страховка на случай, если визуальный метод по какой-то причине не срабатывает.
Домашняя ссылка в меню, мелочь, которая работает на доверие. Посетитель, попавший на внутреннюю страницу из поиска, за доли секунды находит путь к началу сайта и идёт изучать дальше. Без неё часть аудитории просто закроет вкладку. Две минуты в редакторе меню или десять строк кода, и эта точка входа больше не теряется.



