Главная WordPress

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

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

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

  1. Александр
    8 лет назад

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

  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. Ребята ну файл фуншкнспхп легко найти. я вставил код. а куда дальше вставить строчку
    ??? Где искать место шаблона? я на вижуал композере сайт собирал (((

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

  8. Доброй ночи, спасибо за код, очень полезный.
    Возникла проблемка, надеюсь что вы мне поможете.
    На странице автора выдает такую ошибку Notice: Trying to get property of non-object in on line 121 shot.qip.ru/00QPGK-1mqQ2hFtI/ если у пользователя нет записей, если они есть, то ошибка исчезает и имя отображается 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 цепочки по два слеша, то есть site.ru//name//name.html
    Если убрать «/», то всё становится хорошо.

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