Если на сайте нет хлебных крошек, пользователь хуже понимает, где находится внутри структуры, а поисковику сложнее считывать иерархию страниц. В WordPress это можно настроить без отдельного плагина: через файл темы, дочернюю тему или небольшой сниппет в functions.php. Для большинства сайтов этого достаточно, если нужен именно аккуратный навигационный путь по разделам, а не тяжёлый набор SEO-функций.
Ниже разберём рабочий вариант: как вывести хлебные крошки в WordPress, не ломая тему и не завязываясь на лишние расширения.
Что именно будем настраивать
Хлебные крошки — это цепочка ссылок вроде Главная → Раздел → Подраздел → Статья. На практике они решают две задачи:
- помогают посетителю быстро вернуться на уровень выше;
- делают структуру сайта понятнее для поисковых систем и могут улучшить отображение сниппета, если разметка сделана корректно.
Без плагина есть два нормальных пути:
- встроить функцию в тему и вывести её в нужном месте шаблона;
- если тема уже содержит готовый хук или функцию, подключить только вызов, не переписывая шаблон целиком.
Самый универсальный вариант — написать собственную функцию и вставить её в дочернюю тему. Так вы не потеряете изменения после обновления основной темы.
Перед началом: где лучше вносить изменения
Не редактируйте напрямую файлы родительской темы, если сайт уже в работе. После обновления изменения исчезнут. Безопаснее использовать дочернюю тему или, если у вас есть опыт, вынести код в небольшой mu-plugin.
Если вы меняете functions.php, сначала сделайте резервную копию. Ошибка в PHP-коде может привести к белому экрану или падению сайта. Это особенно важно, если доступ к серверу только через панель хостинга, а не через Git или SSH.
Добавляем функцию хлебных крошек в WordPress
Ниже — рабочий базовый вариант без привязки к конкретному плагину. Он подходит для записей, страниц, рубрик и вложенных страниц. Код можно вставить в functions.php дочерней темы.
Сначала добавьте саму функцию:
function wpvip_breadcrumbs() {
if ( is_front_page() ) {
return;
}
echo '<nav class="breadcrumbs" aria-label="Хлебные крошки">';
echo '<ol>';
echo '<li><a href="' . esc_url( home_url( '/' ) ) . '">Главная</a></li>';
if ( is_single() ) {
$category = get_the_category();
if ( ! empty( $category ) ) {
$cat = $category[0];
echo '<li>' . get_category_parents( $cat, true, '</li><li>' ) . '</li>';
}
echo '<li aria-current="page">' . esc_html( get_the_title() ) . '</li>';
} elseif ( is_page() ) {
global $post;
if ( $post->post_parent ) {
$ancestors = array_reverse( get_post_ancestors( $post->ID ) );
foreach ( $ancestors as $ancestor ) {
echo '<li><a href="' . esc_url( get_permalink( $ancestor ) ) . '">' . esc_html( get_the_title( $ancestor ) ) . '</a></li>';
}
}
echo '<li aria-current="page">' . esc_html( get_the_title() ) . '</li>';
} elseif ( is_category() ) {
echo '<li aria-current="page">' . esc_html( single_cat_title( '', false ) ) . '</li>';
}
echo '</ol>';
echo '</nav>';
}Этот код не покрывает все возможные типы архивов и таксономий, но для типового сайта с записями и страницами его уже достаточно. Если у вас сложная структура контента, функцию можно расширить под кастомные типы записей и таксономии.
Как вывести хлебные крошки в шаблоне
После добавления функции нужно вызвать её в нужном месте темы. Обычно это делают в header.php, single.php, page.php или в общем шаблоне перед основным контентом.
Например, если вы хотите показывать крошки над заголовком записи, вставьте вызов туда, где тема выводит контент:
<?php if ( function_exists( 'wpvip_breadcrumbs' ) ) {
wpvip_breadcrumbs();
} ?>Проверка простая: откройте запись, страницу и рубрику на сайте. Если всё подключено верно, вы увидите цепочку ссылок над контентом или в том месте, куда вставили вызов.
Как сделать разметку удобной для поисковых систем
Для SEO важен не только визуальный вывод, но и семантика. Хлебные крошки лучше оборачивать в <nav> с понятным aria-label, а сами элементы — в список. Это помогает и доступности, и машинному чтению структуры.
Если хотите усилить пользу для поисковых систем, можно добавить структурированные данные Schema.org в формате BreadcrumbList. Это не обязательно для самого факта работы хлебных крошек, но полезно, если вы рассчитываете на корректное понимание цепочки поисковыми системами.
Минимальный принцип такой: визуальные крошки и JSON-LD должны описывать одну и ту же иерархию. Если в интерфейсе у вас Главная → Блог → Статья, то и в разметке не должно быть другой структуры.
Когда разметку лучше не усложнять
Если тема уже выводит хлебные крошки и одновременно добавляет собственную schema-разметку, не дублируйте её без проверки. Два разных блока BreadcrumbList с несовпадающими данными могут запутать валидатор и усложнить отладку. Сначала проверьте исходный код страницы и убедитесь, что разметка не повторяется.
Что учесть для разных типов страниц
Универсальная логика для всех страниц редко работает идеально без доработок. На практике чаще всего приходится учитывать три сценария.
- Записи. Обычно показывают рубрику и заголовок статьи. Если у записи несколько рубрик, лучше выбрать одну основную логику и не выводить всё подряд.
- Страницы. Для вложенных страниц полезно строить цепочку по родителям. Для обычной страницы без родителей достаточно
Главная → Страница. - Архивы. Для рубрик и архивных страниц можно выводить только текущий раздел, без лишних промежуточных звеньев.
Если сайт построен на кастомных типах записей, проверьте, как они связаны с таксономиями. Иногда удобнее показывать крошки по терминам, а иногда — только по иерархии самого типа записи. Здесь нет универсального ответа: всё зависит от структуры контента.
Как проверить, что всё работает правильно
После внедрения не ограничивайтесь визуальной проверкой на одной странице. Откройте несколько разных типов страниц и проверьте следующее:
- крошки не дублируются дважды;
- ссылки ведут на правильные разделы;
- текущий элемент не является ссылкой;
- на главной странице крошки не выводятся, если это не задумано отдельно;
- верстка не ломается на мобильных устройствах.
Затем посмотрите исходный код страницы и убедитесь, что HTML не содержит незакрытых тегов. Если вы добавляли schema-разметку, проверьте страницу в валидаторе структурированных данных или в инструментах для проверки разметки, которые поддерживает поисковая система, под которую вы оптимизируете сайт.
Типичные ошибки при настройке без плагина
Самая частая проблема — код вставили в тему, но забыли вызвать функцию в шаблоне. Вторая по частоте — функция есть, но выводится не там, где её ожидает пользователь. Третья — крошки строятся только для записей, а страницы и архивы остаются без навигации.
Ещё одна практическая ошибка — использовать the_title() там, где нужен безопасный вывод строки, или не экранировать URL. В коде выше для этого используются esc_url() и esc_html(). Это не формальность: на живом сайте такие мелочи лучше не игнорировать.
Если после правок сайт перестал открываться, первым делом откатите последний PHP-блок. При отсутствии доступа к админке проще всего восстановить файл через файловый менеджер хостинга или FTP.
Когда без плагина действительно удобнее
Настройка через код подходит, если вам нужен один понятный сценарий без лишних настроек и сторонних зависимостей. Это хороший вариант для небольших и средних сайтов, где хлебные крошки нужны как часть темы, а не как отдельный SEO-комбайн.
Если же у вас сложная структура, много типов контента и нужна детальная настройка вывода для каждого шаблона, код всё равно остаётся рабочим решением, но потребует больше времени на поддержку. В таком случае лучше сразу держать логику в дочерней теме или отдельном мини-плагине, чтобы не потерять её при обновлениях.
Итог здесь простой: хлебные крошки в WordPress можно настроить без плагина, если аккуратно добавить функцию, вывести её в шаблоне и проверить HTML-структуру. Для большинства сайтов этого достаточно, чтобы улучшить навигацию и сделать страницу понятнее для поисковых систем.