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

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

Полезные комментарии (2)
Комментарии (546)
  1. 1
    Александр
    @

    А можно сделать хлебные крошки, чтобы они были завязаны на меню, а не на страницах и рубриках. Просто у меня в меню так

    Страница:
    Страница:
    Рубрика
    Рубрика

    А в рубриках сами записи.
    Пробую установить код, а он мне выдает:
    Главная / запись.
    Без промежуточных.

  2. 3
    Александр
    @

    Огромное спасибо за статью, отличная функция!
    Но есть вопрос, который не могу осилить, т.к. плохо разбираюсь в PHP.
    У меня на сайте все подкатегории вложены в категорию Новости, но в хлебных крошках я не хотел бы видеть название этой категории. Тоесть структура рубрик (и соответственно выдача функции) такова:
    Главная > Новости > Автомобили > Автоваз или Главная > Новости > Автомобили > Камаз
    Требуется исключить категорию Новости из выдачи функции. Может это можно как-то сделать, запретив вывод названия этой категории по её ID?
    Заранее благодарен за ответ.

  3. 5
    Денис

    Возникла проблема при выводе результатов поиска:
    Если на странице с результатами поискового запроса выводятся и страницы и записи — то крошки выводятся без разделителя:

    ГравнаяРезультаты поиска

    Если содержимое однотипное то все нормально

    Главная \ Результаты поиска

  4. 7
    Иван
    @

    У меня вообще ничего не вывелось, пусто.

  5. 8
    @

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

    Как это сделать?

  6. 9
    @

    Спасибо, все получилось, только буквы жирные как поменять, подскажете? пжста

  7. 10
    Михаил

    Здравствуйте, Дмитрий! Отличная функция хлебных крошек, всё работает на ура.
    Но вот понадобилось её немного модифицировать. Задача — отсечь страницы, снятые с публикации (записи не важны). Выводятся они в хлебных крошках, если родительская страница снята с публикации, а дочерняя опубликована.
    Нашёл в кодексе вот такую функцию:

    if ( get_post_status ( $ID ) == 'pending' ){}

    Но как грамотно её вставить в ваш код знаний php не хватает.
    Можете подсказать?

  8. 12
    Виталий
    @

    Дмитрий спасибо большое за данный костыль. Но вот маленький вопросик (если позволите с ссылками)

    разместил Ваш скрипт http://www.nibbl.ru/web/seo/kak-zakryt-ot-indeksacii-vneshnie-ssylki-na-sajte/
    в гугл тулс https://developers.google.com/structured-data/testing-tool/ он выводит два уровня т.е. все вроде бы ок!

    Но в Валидаторе микроразметки Яндекса
    он пишет Микроразметка не обнаружена =(
    http://www.screencapture.ru/file/f9A94dD7

    как такое может быть? Ваш сайт там отображается нормально http://www.screencapture.ru/file/93beA1F0

    + еще один вопрос, а что бы в яндексе тоже были правильные хлебные крошки что нужно сделать? (ps причем не очень понимаю почему Ваш сайт в яндексе хлебные крошки не отображаются http://www.screencapture.ru/file/44872438)

    Заранее спасибо!

  9. 14
    Pupkin

    Хорошая вещь. Только js с выделением глючит(на этой странице).

  10. 15
    @

    После вставки в functions.php — сайт вообще не открывается

  11. 19
    Юлия

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

    у меня выводится только одна рубрика

  12. 20
    Александр

    Добрый день, Дмитрий. Не могу разобраться. Если возможность вывода крошек: Главная->Страница->Записи.
    Где Страница — страница (не рубрика), с которой мы перешли на конкретную запись.
    Заранее спасибо

  13. 22
    Max

    у меня ссылка имеет следующий вид
    www.site.ru///postcat/post
    где у меня может быть ошибка?

  14. 24
    Николай

    Спасибо! Пригодилось. Работает как часики.

  15. 25
    Алина

    У меня такой вопрос. Тема куплена, крошки были изначально. Все почти на русском, кроме некоторых. Для главной нашла код, смогла перевести.
    А как перевести: «Error 404», «Static block»,«Search results for»»» (при нажатии на «Поиск»), «(Page 2)»?
    Не подскажите?

  16. 27
    Ира

    Здраствуйте, подскажите пожалуйста нужно ли ставить ссылку на главную страницу в конце статьи для продвижения, если в плагине хлебные крошки уже есть ссылка на главную страницу в статье?

  17. 29
    Игорь

    Здравствуйте! Огромное спасибо, отличная функция, все работает на ура. Есть вопрос:

    я сделал такое отображение:

    Главная>Рубрика>Подрубрика

    Т.е. название поста после рубрики не выводится, но я хотел бы, чтобы после подрубрики шел разделитель. Как это можно сделать? Т.е. чтобы было так:

    Главная>Рубрика>Подрубрика>

    Заранее спасибо.

  18. 32
    Антон

    Здравствуйте, Dimox!
    Подскажите, пожалуйста, как сделать эту навигационную цепочку полностью некликабельной?

  19. 34
    Виталий

    Добрый день. Подскажите, как для дочернего элемента хлебных крошек присваивать id=»название родительского элемента (транслитом)»?

  20. 35
    Дмитрий

    К сожалению, в хлебных крошках не предусмотрены custom taxonomies архивы (отображение подрубрик), а также CPT записи с custom taxonomies.

    Также, стоит заметить, что если используется CPT с стандартными категориями WP, то нужно добавить этот CPT в исключение, чтобы корректно формировать крошки

    elseif ( is_single() && !is_attachment() ) {
     if ($show_home_link) echo $sep;
     if ( get_post_type() != 'post' && get_post_type() != 'cpt_name') {

    Но для большинства случаев из коробки все работает.

    Спасибо!

  1. 1
    DH

    Для таксономий добавьте:

    } elseif ( is_tax() ) {
     if ($show_home_link && $show_current) echo $sep;
     $term = get_queried_object();
     if ( $term ) {
     $tax = get_taxonomy( $term->taxonomy );
     $title = single_term_title( $tax->labels->name. ': ', false );
     echo $title;
     }
    

    где-нибудь перед

    } elseif ( is_day() ) {
  2. 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».

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