Главная WordPress

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

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

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

  1. Значит не туда вставили код, внимательно просмотрите.

  2. Дима привет!

    скажи пожалуйста, я воспользовался твоим скриптом, но в проверке ГУгла микроданных что-то их не появилось, в чем может быть причина?

  3. Здравствуйте! Скажите пожалуйста, я использую шаблон index. php на странице site.ru/blog, и в крошках написано только «Главная». Как добавить слово Блог, т. е. чтобы было «Главная — Блог». Заранее спасибо!

  4. При «пустом» поиске вордпресс даёт список всех статей, ваши «крошки» в этом случае не отображают никакой информации. Пожалуйста, доработайте этот момент, если считаете нужным.

  5. Здравствуйте! Такой вопрос у меня. Есть формат урл типа: Главная — Категория 1 — Категория 2 — Пост. Ваш код отлично все выдает, спасибо вам за это, но мне требуется дописать одно слово в хлебные крошки, вот как: Главная — Слово Категория 1 — Категория 2 — Пост, чтобы слово показывалось рядом с Категория 1, когда находишься в Категория 2 или в Пост. Пожалуйста помогите!

    • Это можно сделать только путем переименования категории.

    • Это можно сделать только путем переименования категории.

      Интересное предположение, но я с Вами не соглашусь.

      чтобы слово показывалось рядом с Категория 1, когда находишься в Категория 2 или в Пост

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

      if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats); echo "Слово";

      на

      if ($show_current == 0) $cats = preg_replace("#^(.+)$delimiter$#", "$1", $cats); echo "Слово ";

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

  6. Спасибо за хлебные крошки, работают отлично!
    Dimox, скажите пожалуйста, как сделать так, чтобы название текущей страницы (рубрики и т. п.) не дублировалось в хлебных крошках. То есть чтобы совсем не отображался, например:

    Главная/Рубрика/

    Название статьи

    а не Главная/Рубрика/Название статьи

    Название статьи

  7. Здравствуйте, большое спасибо за хлебные крошки. Возник один вопрос, т.к. давно не работал с вордпрессом к сожалению никак не могу вспомнить как решить свою маленькую проблему. Имеется страница новостей, используется пагинация и при переходе по страницам в хлебные крошки добавляется page2 и тд, каким образом можно это убрать чтоб при переходе по страницам так и отображалось главная → новости, а не главная→новостиpage2. Заранее спасибо за ответ

  8. данный код выдает ошибку на страницу вложения (картинки) вот ссылка db-s.ru/doma_iz_brusa/d-10-zheleznodorozhnyj-6/.
    Причем эти страницы с ошибками проиндексировал гугл.
    Помогите решить проблему.
    Если убрать код из темы указанная ссылка с вложением открывается корректно.

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

    Catchable fatal error: Object of class WP_Error could not be converted to string in Z:homephp.lwwwwp-contentthemesdemofunctions.php on line 123
  10. Вот ещё заметил, если добавляешь произвольную таксономию и к ним произвольные записи, допустим такой код в функциях темы:

    /*Регистрация таксономии*/
    register_taxonomy(
    	'category-test',
    	array('test'),
    	array(
    		'hierarchical' => true,
    		'label' => 'Рубрики Тест',
    		'singular_label' => 'Рубрика Тест',
    		'rewrite' => array('slug' => '/category-test'),
    	)
    );
    /*Регистрация записей*/
    add_action('init', 'test_register');
    function test_register() {
    	$labels = array(
    		'name' => _x('Тест Записи', 'post type general name'),
    		'singular_name' => _x('Тест Запись', 'post type singular name'),
    		'parent_item_colon' => ''
    	);
    	$args = array(
    		'labels' => $labels,
    		'public' => true,
    		'publicly_queryable' => true,
    		'show_ui' => true,
    		'query_var' => true,
    		'rewrite' => array( 'slug' => '/category-test/%category-test%' ),
    		'capability_type' => 'post',
    		'hierarchical' => false,
    		'menu_position' => 5,
    		'has_archive' => 'category-test',
    		'supports' => array('title','editor','excerpt','custom-fields','thumbnail','author'),
    	);
    	register_post_type( 'test' , $args );
    	flush_rewrite_rules();
    }
    /*Регистрация слага для записей*/
    function wpa_test_permalinks( $post_link, $id = 0 ){
        $post = get_post($id);
        if ( is_object( $post ) && $post->post_type == 'test' ){
            $terms = wp_get_object_terms( $post->ID, 'category-test' );
            if( $terms ){
                return str_replace( '%category-test%' , $terms[0]->slug , $post_link );
            }
        }
        return $post_link;
    }
    add_filter( 'post_type_link', 'wpa_test_permalinks', 1, 2 );

    Ну и создаешь для них шаблоны: single-test.php и taxonomy-category-test.php.
    То в произвольных таксономиях/записях крошки не работают.

    Проверил в плагине wordpress-seo от yoast (там есть поддержка хлебных крошек), у него в окне «хлебных крошек» появляются все зарегистрированные таксономии и для них можно установить, для каждой таксономии — что отображать (В «хлебных крошках» установить таксономию для:).

    Спасибо за внимание, надеюсь не нагрузил и чем-то помог :)

  11. Здравствуйте ! Подскажите, а как вставить вместо «главная» картинку-ссылку на главную?

  12. Использую плагин для локализации WPML.
    Задача: При смене языка, менять вот этот текст на english

            $text['home'] = 'Главная';
    	$text['category'] = 'Архив рубрики "%s"';
    	$text['search'] = 'Результаты поиска по запросу "%s"';
    	$text['tag'] = 'Записи с тегом "%s"';
    	$text['author'] = 'Статьи автора %s';
    	$text['404'] = 'Ошибка 404';
    
    • <?php if(get_locale() == 'ru_RU') { ?>
              $text['home'] = 'Главная';
      	$text['category'] = 'Архив рубрики "%s"';
      	$text['search'] = 'Результаты поиска по запросу "%s"';
      	$text['tag'] = 'Записи с тегом "%s"';
      	$text['author'] = 'Статьи автора %s';
      	$text['404'] = 'Ошибка 404';
      <?php } else { ?>
              $text['home'] = 'Home';
      	$text['category'] = 'Category "%s"';
      	$text['search'] = 'Search "%s"';
      	$text['tag'] = 'Tag "%s"';
      	$text['author'] = 'Author' %s';
      	$text['404'] = 'Error 404';
      <?php } ?>

      Я бы сделал както так, пробовать надо непосредственно в коде =) Возможно php открытие и закрытие кодов не понадобится, это же и есть php все.

      • у Вас ошибка.

        <?php if(get_locale() == 'ru_RU') {
        $text['home'] = 'Главная';  
          $text['category'] = 'Архив рубрики "%s"';  
          $text['search'] = 'Результаты поиска по запросу "%s"';  
          $text['tag'] = 'Записи с тегом "%s"';  
          $text['author'] = 'Статьи автора %s';  
          $text['404'] = 'Ошибка 404';  
        } else {
        $text['home'] = 'Home';  
          $text['category'] = 'Category "%s"';  
          $text['search'] = 'Search "%s"';  
          $text['tag'] = 'Tag "%s"';  
          $text['author'] = 'Author' %s';  
          $text['404'] = 'Error 404';  
        } ?>
        

        дерзайте

      • Достаточно использовать только одну строку, и кода меньше будет):

        if (get_locale () == 'ru_RU') {
        } else {
        $text['home'] = 'Home';
        }

        Да, и действительно использовать не нужно.

  13. Добрый день, а как бы сделать так чтобы эти крошки работали в woocommerce?

  14. Использовал хлебные крошки встроенные в тему, но теперь решил заменить на ваш вариант. Остался CSS код, как мне его переделать под ваш вариант, вот код:

    	#breadcrumbs { padding: 10px 5px 31px 4px; font: italic 12px Georgia, serif; color: #4e4d4d; text-shadow: 1px 1px 1px #ffffff; }
    		#breadcrumbs .sep { background:url("images/breadcrumbs_separator.png") no-repeat; display:inline-block; height:7px; margin:1px 1px 0 3px; width:4px; }
    		#breadcrumbs a { color: #807f7f; }
    		#breadcrumbs a:hover { text-decoration: none; color: #4e4d4d; }

    Я думал просто поменять breadcrumbs на crumbs, но так не работает. Заранее благодарен за ответ.

  15. Dimox, а подскажите пожалуйста ещё, как в качестве разделителя между «крошками» вставить картинку. В CSS коде у меня за это отвечал код:

    .breadcrumbs .sep { background:url("images/breadcrumbs_separator.png") no-repeat; display:inline-block; height:7px; margin:1px 1px 0 3px; width:4px; }

    У вас в коде я нашел строчку:

    	$delimiter = ' &raquo; '; // разделить между "крошками"

    Но как правильно туда вставить это?

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

    Особенность некорректности:
    Если первый символ названия подрубрики выше по алфавиту чем первый символ названия рубрики, навигационная цепочка отображается верно, даже если опубликована одновременно в рубрику и подрубрику. Если же первым по алфавиту идет название рубрики, а потом название подрубрики, то навигационная цепочка имеет вид:
    Главная → Рубрика → Название статьи, а должна иметь вид:
    Главная → Рубрика → Подрубрика → Название статьи.

    Думаю это недоработка, которую нужно исправить. Или я чего-то не понимаю?

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

  17. Дмитрий, здравствуйте!
    Ваш скрипт растянули почти все блоги вашей тематики, даже не удосужившись убрать Ваш ник к хлебным крошкам «dimox_breadcrumbs» и поставить ссылку на источник. Спасибо за проделанную работу и помощь комментаторам с их проблемами. Добавлю в закладки вашу статью. В ближайшее время реализую на своем сайте. Хоть и установка скрипта займет не больше минуты, но связи с огромным количеством комментариев придется почитать их для тонкой настройки хлебных крошек. Успехов!

  18. Екатерина
    10 лет назад

    Здравствуйте!
    Подскажите, установила сее чудо, все прекрасно работает, спасибо!
    Но, есть проблемка, лично у меня, когда нажимаю на любую рубрику (категорию) в меню, то в каждой кратком статье — хлебные крошки.
    Т. е. если на страницах блога отображать не более — 5 записей, то и «крошек» будет тоже 5.
    Подскажите, как исправить? Спасибо Всем!

  19. Подскажите, пожалуйста, у меня после установки, отображается:
    главнаястраница1""страница2

    т.е смещается разделитель. Если 2 страницы то нормально.

    В коде искал вроде все нормально, копировал как у Вас написано изменения не вносил.

    Спасибо.

  20. Спасибо бро!

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