Ищем путь по хлебным крошкам

Улучшаем навигацию и перелинковку страниц для seo оптимизации с помощью хлебных крошек.

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

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

У этой фишки две основные задачи.
1. Они помогают пользователю легче ориентироваться на сайте и в любой момент понимать, в каком разделе он в данный момент находится, что очень полезно для больших многоуровневых сайтов с множеством различных материалов.
2. Перелинковка сайта для лучшей индексации всех вложенных страниц.

Хлебные крошки для сайта

Строятся хлебные крошки следующим образом:

Главная — Раздел — Подраздел — Текущая страница

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

Плагин, чтобы разместить хлебные крошки на сайт

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

Хлебные крошки без плагина

Для противников плагинов привожу пример установки хлебных крошек без него.

Итак, добавляем в functions.php

function dimox_breadcrumbs() {
 
  $showOnHome = 0; // 1 - show breadcrumbs on the homepage, 0 - don't show
  $delimiter = '»'; // delimiter between crumbs
  $home = 'Home'; // text for the 'Home' link
  $showCurrent = 1; // 1 - show current post/page title in breadcrumbs, 0 - don't show
  $before = '<span class="current">'; // tag before the current crumb
  $after = '</span>'; // tag after the current crumb
 
  global $post;
  $homeLink = get_bloginfo('url');
 
  if (is_home() || is_front_page()) {
 
    if ($showOnHome == 1) echo '<div id="crumbs"><a href="' . $homeLink . '">' . $home . '</a></div>';
 
  } else {
 
    echo '<div id="crumbs"><a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' ';
 
    if ( is_category() ) {
      global $wp_query;
      $cat_obj = $wp_query->get_queried_object();
      $thisCat = $cat_obj->term_id;
      $thisCat = get_category($thisCat);
      $parentCat = get_category($thisCat->parent);
      if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
      echo $before . 'Archive by category "' . single_cat_title('', false) . '"' . $after;
 
    } elseif ( is_day() ) {
      echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
      echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
      echo $before . get_the_time('d') . $after;
 
    } elseif ( is_month() ) {
      echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $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;
        echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' ';
        if ($showCurrent == 1) echo $before . get_the_title() . $after;
      } else {
        $cat = get_the_category(); $cat = $cat[0];
        echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
        if ($showCurrent == 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($post->post_parent);
      $cat = get_the_category($parent->ID); $cat = $cat[0];
      echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
      echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a> ' . $delimiter . ' ';
      if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
    } elseif ( is_page() && !$post->post_parent ) {
      if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
    } elseif ( is_page() && $post->post_parent ) {
      $parent_id  = $post->post_parent;
      $breadcrumbs = array();
      while ($parent_id) {
        $page = get_page($parent_id);
        $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
        $parent_id  = $page->post_parent;
      }
      $breadcrumbs = array_reverse($breadcrumbs);
      foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';
      if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
    } elseif ( is_search() ) {
      echo $before . 'Search results for "' . get_search_query() . '"' . $after;
 
    } elseif ( is_tag() ) {
      echo $before . 'Posts tagged "' . single_tag_title('', false) . '"' . $after;
 
    } elseif ( is_author() ) {
       global $author;
      $userdata = get_userdata($author);
      echo $before . 'Articles posted by ' . $userdata->display_name . $after;
 
    } elseif ( is_404() ) {
      echo $before . 'Error 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>';
 
  }
} // end dimox_breadcrumbs()





А в место вывода панели навигации — следующий:

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

За код вставки панели хлебные крошки спасибо сайту dimox.net

Комментариев: 4

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

    Зайдите ко мне посмотрите, оцените, может что нибудь посоветуете.

    С уважением Александр

    • Спасибо!
      Можете разместить с указанием ссылки на сайт http://wp-voprosov.net и указанием авторства.
      Желаю успешного развития блога!
      Посоветовать — если на вскидку, то надо немного над цветами дизайна поработать — слишком много различных по тону и яркости цветов в оформлении, я 7 насчитал, надо бы это как-то к общему знаменателю привести.
      И очень много рекламы, несерьезно смотрится и отвлекает от основного контента.
      Потом, блок с новостями Яндекса явно лишний — если б он по теме вашего сайта был, тогда да, а так не вписывается

  • Хорошее видео — все четко и понятно.

    Желательно конечно увидеть ваши настройка, ведь видео было снято на основе настройки другого блога. Спасибо. =)

    • Спасибо. На данном блоге они уже в шаблоне шли, поэтому я ничего особо не настраивал )

Добавить комментарий