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

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

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

  1. Спасибо!Очень нужный код, дабы не пользоваться плагином.

  2. Кстати dimox. Отображается полная цепочка ссылок до текущей страницы только если при публикации статьи отметить все дочерние и родительские рубрики. Если указать только одну, то только её и выведет, даже если она вложенная 3-го уровня.

  3. Спасибо, что обновляете скрипт.
    Попытаюсь объяснить данную проблему.
    Необходимо отобразить в участке кода is_single() нумерацию категорий и подкатегорий, а именно так:
    Главная -> (2) Категория -> (3) Подкатегория -> (4) Название записи
    Это нужно для такого кода:

    <meta itemprop="position" content="<?php echo $i + 2; ?>" />

    Главная по умолчанию будет именть content=»1″, а остальные категории будут помечаться нумерацией.

    Подскажите, как реализовать в Вашем коде, заранее спасибо!

  4. Спасибо огромное !!!!

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

    
    } elseif ( is_tax() ) {
                    if ($show_home_link &amp;&amp; $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() ) {
  6. авдвордс
    3 года назад

    Ребята ну файл фуншкнспхп легко найти. я вставил код. а куда дальше вставить строчку
    ??? Где искать место шаблона? я на вижуал композере сайт собирал(((

  7. Такой вопрос: на сайте записи публикуются в двух разных группах категорий. Например, одна группа — населенные пункты, а вторая группа — тема новостей. При добавлении данного кода в разных записях наблюдается разное отображение иерархии. Так, в некоторых записях можно встретить Главная > Киев, а в некоторых — Главная > Криминал, что не совсем нормально. Как исключить некоторые рубрики? Ведь в любом случае запись не остается без рубрики. Мне нужно исключить именно населенный пункт, поскольку его я могу выводить другим способом.

  8. Доброй ночи, спасибо за код, очень полезный.
    Возникла проблемка, надеюсь что вы мне поможете.
    На странице автора выдает такую ошибку Notice: Trying to get property of non-object in on line 121 http://shot.qip.ru/00QPGK-1mqQ2hFtI/ если у пользователя нет записей, если они есть, то ошибка исчезает и имя отображается http://shot.qip.ru/00QPGK-3mqQ2hFtJ/
    Надеюсь на вашу помощь, не хочется плагин ставить, заранее спасибо.

  9. Функцию необходимо поместить в файл functions.php вашей WordPress-темы. Куда именно — в самый низ или где-то между строчек? Я в самый низ воткнул и нет крошек…

    Про этот не спрашиваю, так как знаю:

  10. Добрый вечер, не подходят такие хлебные крошки вообще. Происходит дублирование тайтла статьи. Нужно убрать название статьи из иерархии. Подскажите как оставить ссылку на главную и на рубрику, без single. ?

  11. Здравствуйте. У меня немного нестандартная ситуация… как с помощью вашей функции вывести хлебные крошки для указанного поста, а не текущего?

    • Можете написать функцию преобразования кода в php код. Для примера:

      
      function exec_php($matches){
      	eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
      	return $inline_execute_output;
      }
      function inline_php($content){
      	$content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
      	$content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
      	return $content;
      }
      add_filter('the_content', 'inline_php', 0);
      

      После этого всё, что попадет между [exec][/exec] будет php кодом и полноценно заработает.

      Примером будет

      [exec]<?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?>[/exec]
  12. Решил немного допилить, может кому-то пригодится, в случаях когда используется статическая страница для вывода новостей, хлебные крошки в такой интерпретации показываться не будут, поэтому делаем следующее:
    1) в коде ищем раздел опций и добавляем след. опцию
    $text[‘news’] = ‘NEWS’; // текст для страницы «Новости»
    2) в сравнении if (is_home() || is_front_page()) убираем часть касающуюся именно страницы новостей, в итоге код:
    if (is_front_page())
    3) ищем следующий код » } elseif ( is_search() ) { »
    и перед ним добавляем
    } elseif ( is_home() ) {
    if ($show_home_link && $show_current) echo $sep;
    if ($show_current) echo $before . $text[‘news’] . $after;

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

    Автору спасибо за код, постоянно его в разработке использую… лучше не напишешь…

  13. Здравствуйте.
    Как можно исключить из ссылок название домена? Мне необходимо в промежуток между доменом и последующей строкой поставить адрес города.

    • Решил проблему изменением 145 строчки. (делал только для страниц, остальное мне не важно)
      Заменил

      $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID));

      на

      $breadcrumbs[] = sprintf($link, '/'.$item_city.'/'.get_page_uri($page->ID), get_the_title($page->ID));

      где $item_city — моя переменная города.
      Также необходимо заменить функцию get_page на get_post, так как она запрещена с версии 3.5.0, больше не поддерживается и может быть удалена в следующих версиях

  14. Стоит qtranslate Как вывести строку $text[‘home’] = ‘Главная’; на 2х языках.

    $text[‘home’] = ‘[:ru]Головна [:en]Home’; — НЕ работает

  15. У меня другой вопрос. Почему-то на странице поиска, когда ничего не найдено и на странице ошибки 404 выдает такую ошибку «Notice: Trying to get property of non-object in /var/www/u000000/data/www/site.com/wp-content/themes/shablon/functions.php on line 142».

    Ругается на эту строку:

    $parent_id = $post->post_parent;

    При этом в код функции не вмешивался, скопировал и вставил как есть.

    Когда результаты поиска есть и на всех остальных страницах, этой ошибки нет.

    В чем может быть проблема?

  16. Добрый день. Спасибо за код, работает отлично.
    Только я понятия не имею как и куда писать стили CSS для изменения параметров шрифта((
    Мне нужно сделать чтобы ссылки подчёркнуты были, исключая разделители и текущую «крошку». У текущей «крошки» хочу изменить цвет. И нет, я не ленивый, я уже попробовал тысячи способов, но у меня не получается ничего изменть.
    Подскажите пожалуйста простым языком.

  17. Доброго времени суток Дмитрий. Благодарю за реализацию хлебных крошек. Есть вопрос по этому поводу, а именно смущает вывод заголовка h1 — 2 раза. Как поисковики к этому отнесутся?

  18. Спасибо автору. Отличная функция!

  19. Заинтересовал вопрос.

    На сайте есть крошки. И они на русском. Вывожу через

    Но так же есть страница на англ языке.
    И там лучше бы сделать крошки на англ. языке, точнее слово «главная» -> переименовать в «home» только для этой определенной страницы.

    Какое есть решение?

  20. Здравствуйте!
    А что делает эта строка?

     printf($link, $home_link . '/' . $slug['slug'] . '/', $post_type->labels->singular_name);

    В одном плагине она добавляет в url цепочки по два слеша, то есть http://site.ru//name//name.html
    Если убрать «/», то всё становится хорошо.

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