«Хлебные крошки» для WordPress без использования плагина

"Хлебные крошки" - это важный элемент навигации веб-сайта, который повышает его юзабилити. Особенно это касается сайтов со сложной структурой. Я, к сожалению (а, может, и не к сожалению), не использую их на большинстве своих сайтов, возможно, потому, что у них слишком простая структура (для такого ...

Комментарии (665)

  1. Как вывести title=»» к хлебным ссылкам?

  2. Добрый днь,

    Нужен хелп. После перехода со страницы новостей которая расположена по адресу domain.name/news на новость (новости в рубриках) domain.name/2017/04/02/news_item линк возврата на новости формируется почему-то domain.name/category/news. Подскажите как поправить?

  3. А я всё пытаюсь с помощью плагина seo by yoast сделать -)
    Гляну Ваш скрипт -)

  4. Подскажите еще такой вопрос.

    Установил плагин Easy testimonials. Все настроил все работает.

    Но когда переходишь на Testimonial то хлебные крошки получаются

    Главная -> Testimonial -> Вася Пупкин

    Подскажите, пожалуйста как модифицировать скрипт что бы слово Testimonial замнилось скажем на — «Отзыв»

  5. Не работает.. в крошках некорректная ссылка %product_cat%

  6. Все больше убеждаюсь что WP — огромный костыль

  7. А можно как-то сделать, чтобы название поста можно было бы ввести вручную в хлебных крошках посредством создания специального поля в редактировании записи WP? Например, если его заголовок очень длинный и хотелось бы выводить его не весь, а, к примеру, 1-2 слова?

    • Замените эти строки:

      
      if ( get_query_var('cpage') ) {
      	echo $sep . sprintf($link, get_permalink(), get_the_title()) . $sep . $before . sprintf($text['cpage'], get_query_var('cpage')) . $after;
      } else {
      	if ($show_current) echo $before . get_the_title() . $after;
      }
      

      на такие:

      
      $title = get_the_title();
      $title_custom = get_post_meta(get_the_ID(), 'title', true);
      if ($title_custom) $title = $title_custom;
      if ( get_query_var('cpage') ) {
      	echo $sep . sprintf($link, get_permalink(), $title) . $sep . $before . sprintf($text['cpage'], get_query_var('cpage')) . $after;
      } else {
      	if ($show_current) echo $before . $title . $after;
      }
      

      Заголовок указывается через произвольное поле с именем «title».

  8. Отличный вариант. Три действия и все работает, а то с редактированием стандартных вариантов в темах обычно все сложно))). Спасибо

  9. Здравствуйте! Вопрос следующий, на страницах товаров woocommerce выводятся следующие крошки «Главная › Товар › Название товара». Как могу изменить название категории которое сейчас «Товар», на например «Товары» или «Витрина»?

  10. Добрый день!
    Подскажите, пожалуйста, как исправить:

    Я публикую статью (через создание записи, не страницы) и все запись/статьи собраны на одной странице www.website/news/

    Но при создании «Записи» (не страница), при выводе на экран хлебных крошек определяется не страница News, на которой сгруппированы все новости (адрес: website/news/название статьи), а первая отмеченная в записях рубрика, к которой относится запись (главная > название рубрики > название статьи)

    В настройках постоянных ссылок на сайте выбран формат www.website/sample-post/
    Записи имеют формат www.website/news/

    Как исправить чтобы в хлебных крошках определялась именно страница со всеми статьями, а не рубрика к которой относится запись?

    С уважением,
    Наталья

  11. здравствуйте! подскажите, пожалуйста, как сделать, чтобы не выводилась текущая категория, которая последняя и без ссылки?

    
    <nav class="woocommerce-breadcrumb">
    <a href="http://xn--4--8kctk0bgv.xn--p1ai">Главная</a>
    <span class="sep">›</span>
    <a href="http://xn--4--8kctk0bgv.xn--p1ai/products/">Продукция</a>
    <span class="sep">›</span> <a href="http://xn--4--8kctk0bgv.xn--p1ai/product-category/prazdniki/">Праздники</a>
    <span class="sep">›</span>
    <a href="http://xn--4--8kctk0bgv.xn--p1ai/product-category/prazdniki/prazdniki-prazdniki/">8 Марта</a>
    <span class="sep">›</span>
    <a href="http://xn--4--8kctk0bgv.xn--p1ai/product-category/prazdniki/prazdniki-prazdniki/8-marta/">Приколы и игры</a>
    <span class="sep">›</span>
    Игры
    </nav>
    
  12. Подскажите, пожалуйста, вставляю код в functions.php, которые прописаны, вставляю в шаблон. но пр этом после сохранение файла сайт сразу ложится :-(

    Я что-то не так делаю, или есть ошибка в коде?

  13. Спасибо за крошек, пригодились. :)
    Cудя по документации Google и Schema.org вам не хватает,чтобы последняя крошка тоже была размечена.
    Иначе сейчас в Google Structured Data Testing Tool отображается не вся цепочка.
    Достаточно добавить к элементам:

    
            <link itemprop="url" content="#ссылка" />

    В данном случае нельзя поставить meta, на который ругается Яндекс.Валидатор

    Плюс было бы классно добавить нумерацию:

    <meta itemprop="position" content="#позиция" />

    В итог получается как-то так, но я не знаю, как автоматизировать верное проставление нумерации цепочки и как добавить ссылку в последнюю крошку. :(

    
      $wrap_before = '<div class="breadcrumbs" itemscope itemtype="http://schema.org/BreadcrumbList">'; 
      $wrap_after = '</div>'; 
      $sep = '>'; 
      $sep_before = '<span class="sep">'; 
      $sep_after = '</span>'; 
      $show_home_link = 1; 
      $show_on_home = 0; 
      $show_current = 1; 
      $before = '<span class="current" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="item"><span itemprop="name">'; 
      $after = '</span><link itemprop="url" href="#ссылка" /></span><meta itemprop="position" content="#позиция" /></span>'; 
    
      global $post;
      $home_url = home_url('/');
      $link_before = '<span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">';
      $link_after = '</span>';
      $link_attr = ' itemprop="item"';
      $link_in_before = '<span itemprop="name">';
      $link_in_after = '</span>';
      $link = $link_before . '<a href="%1$s"' . $link_attr . '>' . $link_in_before . '%2$s' . $link_in_after . '<meta itemprop="position" content="#позиция" /></a>' . $link_after;
      $frontpage_id = get_option('page_on_front');
      $parent_id = ($post) ? $post->post_parent : '';
      $sep = ' ' . $sep_before . $sep . $sep_after . ' ';
      $home_link = $link_before . '<a href="' . $home_url . '"' . $link_attr . ' class="home">' . $link_in_before . $text['home'] . $link_in_after . '</a><meta itemprop="position" content="1" />' . $link_after;
    
    • Cудя по документации Google и Schema.org вам не хватает,чтобы последняя крошка тоже была размечена.

      Если речь про крошку текущей страницы, то по указанным ссылкам ее вообще нет. Там последняя ссылка — это ссылка на родителя. Ссылку на саму себя ставить не логично.

      • Нет, Ancillary Justiceв (книга такая) в примере Google — это не ссылка на родителя, а текущая страница — ancillaryjustice.html (выше над примерами пояснение).

        А ещё

        item - Thing, required

        Я так понимаю. что на текущую страницу мы указываем ссылку не для того, чтобы переходить пользователям (к тому же она скрыта для пользователей), а чтобы роботы могли понимать, где что как и зачем расположена текущая страница.

  14. Подскажите, когда в вордпрее выбираем в настройках страницу блога, хлебные крошки на данной странице перестают работать
    Возможно исправить это ?

  15. Не подскажите, как убрать ссылку на главной, если я на ней нохожусь?
    это значение поставил в 0 и всё равно ссылка осталась; $show_home_link = 0;

  16. Здравствуйте. Спасибо за прекрасное решение. Подскажите, пожалуйста, возможно ли решить следующую проблему: крошки работают идеально при условии, что для записи оставлена галка только на подрубрике. Если ставить две галки, указывая и родительскую рубрику, и дочернюю, в крошках отображается полный путь до записи только для первой подрубрики. Например, при схеме:
    Рубрика
    Подрубрика1
    Подрубрика2

    крошки будут выглядеть так:
    Главная > Рубрика > Подрубрика 1
    Главная > Рубрика

    Спасибо.

  17. Спасибо за ответ, а ломал голову, что делаю не так. Что ж, жаль. Поставил крошки от Yoast SEO, теперь все работает, как хотелось бы.

  18. Я вот вбиваю в Яндекс заголовок данной страницы, вижу ссылку на данную статью в результатах поиска, но не вижу навигационной цепочки в сниппете. Там просто ссылка. Яндекс не поддерживает данный язык разметки? Я посмотрел, вроде как те сайты, для которых выводится сниппет, чуть по другому организован html код микроразметки.

  19. Хотел установить, но прочел, что проблемы с разметкой. Только настроил сниппет рейтинга для гугла и боюсь теперь ставить хлебные крошки. Скажите пожалуйста они друг-другу не будут мешать?
    У меня на сайте, в принципе, не глубокая вложенность. Главная->Категория->Игра. Посоветуйте пожалуйста как реализовать.

  20. Единственное, что теперь останется сделать — оформить их с помощью CSS. Для этого к блоку «хлебных крошек» предусмотрен класс .breadcrumbs, для разделителя — .sep а для текущей «крошки» — .current.

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

Ваш комментарий