Полезны ли хлебные крошки для SEO? Как их сделать?

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

Нужны ли они? Как влияют на поисковое продвижение? Как правильно использовать?

 
Навигационная строка улучшает поведенческие факторы: людям видна структура ресурса, им становится легче перемещаться по нему.
 
На СЕО положительно влияет за счёт перелинковки с другими страницами. Но для получения пользы надо соблюсти несколько условий:
 

  • Не ставить крошки на главную страницу. Лишняя дублирующая ссылка.
  •  

  • По этой же причине, для любой страницы строка навигации не должна заканчиваться ссылкой на эту страницу.
  •  

  • Лучше всего разместить «хлебные крошки» сверху, сразу под основным меню.

 
Отрицательное влияние на SEO также возможно. Если навигационный путь содержит в названиях рубрик слова, входящие в Title страницы, и их URL адреса — транслитерация этих фраз, то может возникнуть переоптимизация по этим запросам.
 
Решить эту проблему можно изменив названия рубрик и URL на синонимы.
 

С помощью какого плагина можно сделать хлебные крошки на WordPress?

 
Многие темы для WordPress имеют встроенные хлебные крошки. Это самый простой вариант заполучить их.
 
Второй по сложности способ — использование плагина Yoast SEO для внутренней оптимизации сайта. В него встроена возможность применения навигационной строки.
 
Хлебные крошки в Yoast SEO
 
Произведя настройки как на рисунке, необходимо в файл темы single.php добавить код. Как на картинке ниже.
 
Правка single.php
 
В результате появится строка на сайте. Смотрите ниже.
 
Крошки сделанные в Yoast SEO
 
Третий метод — использование плагина Breadcrumbs NavXT. Это очень старая разработка. Настройка прилично описана тут.
 
По мне, проще без него реализовать хлебные крошки.
 

Как их сделать без плагинов?

 
Всё придумано до нас.
 

function dimox_breadcrumbs() {
 
	/* === OPTIONS === */
$text['home'] = 'Главная'; // текст ссылки "Главная"
 
$text['category'] = 'Архив рубрики "%s"'; // текст для страницы рубрики
 
$text['search'] = 'Результаты поиска по запросу "%s"'; // текст для страницы с результатами поиска
 
$text['tag'] = 'Записи с тегом "%s"'; // текст для страницы тега
 
$text['author'] = 'Статьи автора %s'; // текст для страницы автора
 
$text['404'] = 'Ошибка 404'; // текст для страницы 404
 
$show_current = 1; // 1 - показывать название текущей статьи/страницы/рубрики, 0 - не показывать
 
$show_on_home = 0; // 1 - показывать "хлебные крошки" на главной странице, 0 - не показывать
 
$show_home_link = 1; // 1 - показывать ссылку "Главная", 0 - не показывать
 
$show_title = 1; // 1 - показывать подсказку (title) для ссылок, 0 - не показывать
 
$delimiter = ' » '; // разделить между "крошками"
 
$before = '<span class="current">'; // тег перед текущей "крошкой"
 
$after = '</span>'; // тег после текущей "крошки"
 
/* === END OF OPTIONS === */
 
global $post;
 
$home_link = home_url('/');
 
$link_before = '<span typeof="v:Breadcrumb">';
 
$link_after = '</span>';
 
$link_attr = ' rel="v:url" property="v:title"';
 
$link = $link_before . '<a' . $link_attr . ' href="%1$s">%2$s</a>' . $link_after;
 
$parent_id = $parent_id_2 = $post->post_parent;
 
$frontpage_id = get_option('page_on_front');
 
if (is_home() || is_front_page()) {
 
if ($show_on_home == 1) echo '<div><a href="' . $home_link . '">' . $text['home'] . '</a></div>';
 
} else {
 
echo '<div class="breadcrumbs" xmlns:v="http://rdf.data-vocabulary.org/#">';
 
if ($show_home_link == 1) {
 
echo '<a href="' . $home_link . '" rel="v:url" property="v:title">' . $text['home'] . '</a>';
 
if ($frontpage_id == 0 || $parent_id != $frontpage_id) echo $delimiter;
 
}
 
if ( is_category() ) {
 
$this_cat = get_category(get_query_var('cat'), false);
 
if ($this_cat->parent != 0) {
 
$cats = get_category_parents($this_cat->parent, TRUE, $delimiter);
 
if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
 
$cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
 
$cats = str_replace('</a>', '</a>' . $link_after, $cats);
 
if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
 
echo $cats;
 
}
 
if ($show_current == 1) echo $before . sprintf($text['category'], single_cat_title('', false)) . $after;
 
} elseif ( is_search() ) {
 
echo $before . sprintf($text['search'], get_search_query()) . $after;
 
} elseif ( is_day() ) {
 
echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
 
echo sprintf($link, get_month_link(get_the_time('Y'),get_the_time('m')), get_the_time('F')) . $delimiter;
 
echo $before . get_the_time('d') . $after;
 
} elseif ( is_month() ) {
 
echo sprintf($link, get_year_link(get_the_time('Y')), get_the_time('Y')) . $delimiter;
 
echo $before . get_the_time('F') . $after;
 
} elseif ( is_year() ) {
 
echo $before . get_the_time('Y') . $after;
 
} elseif ( is_single() && !is_attachment() ) {
 
if ( get_post_type() != 'post' ) {
 
$post_type = get_post_type_object(get_post_type());
 
$slug = $post_type->rewrite;
 
printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);
 
if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
 
} else {
 
$cat = get_the_category(); $cat = $cat[0];
 
$cats = get_category_parents($cat, TRUE, $delimiter);
 
if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats);
 
$cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
 
$cats = str_replace('</a>', '</a>' . $link_after, $cats);
 
if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
 
echo $cats;
 
if ($show_current == 1) echo $before . get_the_title() . $after;
 
}
} elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
 
$post_type = get_post_type_object(get_post_type());
 
echo $before . $post_type->labels->singular_name . $after;
 
} elseif ( is_attachment() ) {
 
$parent = get_post($parent_id);
 
$cat = get_the_category($parent->ID); $cat = $cat[0];
 
$cats = get_category_parents($cat, TRUE, $delimiter);
 
$cats = str_replace('<a', $link_before . '<a' . $link_attr, $cats);
 
$cats = str_replace('</a>', '</a>' . $link_after, $cats);
 
if ($show_title == 0) $cats = preg_replace('/ title="(.*?)"/', '', $cats);
 
echo $cats;
 
printf($link, get_permalink($parent), $parent->post_title);
 
if ($show_current == 1) echo $delimiter . $before . get_the_title() . $after;
 
} elseif ( is_page() && !$parent_id ) {
 
if ($show_current == 1) echo $before . get_the_title() . $after;
 
} elseif ( is_page() && $parent_id ) {
 
if ($parent_id != $frontpage_id) {
 
$breadcrumbs = array();
 
while ($parent_id) {
 
$page = get_page($parent_id);
 
if ($parent_id != $frontpage_id) {
 
$breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));
 
}
 
$parent_id = $page->post_parent;
 
}
 
$breadcrumbs = array_reverse($breadcrumbs);
 
for ($i = 0; $i < count($breadcrumbs); $i++) {
 
echo $breadcrumbs[$i];
 
if ($i != count($breadcrumbs)-1) echo $delimiter;
 
}
 
}
 
if ($show_current == 1) {
 
if ($show_home_link == 1 || ($parent_id_2 != 0 && $parent_id_2 != $frontpage_id)) echo $delimiter;
 
echo $before . get_the_title() . $after;
 
}
 
} elseif ( is_tag() ) {
 
echo $before . sprintf($text['tag'], single_tag_title('', false)) . $after;
 
} elseif ( is_author() ) {
 
global $author;
 
$userdata = get_userdata($author);
 
echo $before . sprintf($text['author'], $userdata->display_name) . $after;
 
} elseif ( is_404() ) {
 
echo $before . $text['404'] . $after;
 
}
 
if ( get_query_var('paged') ) {
 
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
 
echo __('Page') . ' ' . get_query_var('paged');
 
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
 
}
 
echo '</div><!-- .breadcrumbs -->';
 
}
 
} // end dimox_breadcrumbs()


 
Берём код и копируем его в файл functions.php нашей темы. Просто, в низ файла. Сохраняем.
 

<!--?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?-->


 
Теперь как делали ранее, в файл single.php вставляем команду вызова. Получаем результат.
 
Крошки сделанные без плагинов
 
Если Вам необходимо изменить цвет, шрифт, размер крошек, то код вызова меняем на следующий:
 

<div class="crumbs"> <?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?> </div>


 
В файл style.css добавляем в низ код:
 

.crumbs {
 
border-bottom: 1px dotted #999999;
 
font-family: "Georgia", "Times New Roman", "Times", serif;
 
font-size: 9px;
 
font-weight: 600;
 
line-height: 15px;
 
color: #ccc;
 
}
 
.crumbs  a{
 
font-family: "Georgia", "Times New Roman", "Times", serif;
 
font-size: 9px;
 
font-weight: 600;
 
line-height: 15px;
 
color: #ccc;
 
text-decoration: none;
 
}


 
Можете менять параметры. Внешний вид изменится.
 
P.S.: Для сайтов со сложной структурой навигационная строка будет полезна. Установить её несложно самому, основные моменты мы рассмотрели. С учётом того, что в последнее время все используют плагин Yoast SEO, проблем нет вообще.
 

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