Снова ищем одного-двух вордпрессеров в нашу команду!

Как сделать хлебные крошки

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

Для того, чтобы добавить хлебные крошки на сайт на WordPress вам не нужен специальный плагин «хлебные крошки», не нужно самому долго и мучительно придумывать как «сделать» хлебные крошки на сайте, не нужно долго мучить поисковики различными мудрёными фразами, а достаточно скопировать и вставить эту строчку в то место в шаблоне, куда вам нужно.

<?php the_breadcrumb() ?>

Теперь распишем саму функцию, сразу говорю, готовьтесь, что будет много кода.

Дело в том, что я выкладываю полностью законченный и 100% рабочий вариант. Здесь учтены все типы страниц, которые только могут быть на WordPress: посты, страницы, вложенные страницы (поддерживается любое количество уровней вложенности), рубрики, подрубрики (неограниченное количество вложений), теги, архивы, страницы поиска, страницы с записями какого-либо одного автора.

Также отображается номер текущей страницы, что тоже довольно полезно.

Короче засуньте весь этот код в файл functions.php:

function the_breadcrumb(){
global $post;
if(!is_home()){ 
   echo '<a href="'.site_url().'">Главная</a> &amp;raquo; ';
	if(is_single()){ // записи
	the_category(', ');
	echo " &amp;raquo; ";
	the_title();
	}
	elseif (is_page()) { // страницы
		if ($post->post_parent ) {
			$parent_id  = $post->post_parent;
			$breadcrumbs = array();
			while ($parent_id) {
				$page = get_page($parent_id);
				$breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
				$parent_id  = $page->post_parent;
			}
			$breadcrumbs = array_reverse($breadcrumbs);
			foreach ($breadcrumbs as $crumb) echo $crumb . ' &amp;raquo; ';
		}
		echo the_title();
	}
	elseif (is_category()) { // категории
		global $wp_query;
		$obj_cat = $wp_query->get_queried_object();
		$current_cat = $obj_cat->term_id;
		$current_cat = get_category($current_cat);
		$parent_cat = get_category($current_cat->parent);
		if ($current_cat->parent != 0) 
			echo(get_category_parents($parent_cat, TRUE, ' &amp;raquo; '));
		single_cat_title();
	}
	elseif (is_search()) { // страницы поиска
		echo 'Результаты поиска для "' . get_search_query() . '"';
	}
	elseif (is_tag()) { // теги (метки)
		echo single_tag_title('', false);
	}
	elseif (is_day()) { // архивы (по дням)
		echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> &amp;raquo; ';
		echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> &amp;raquo; ';
		echo get_the_time('d');
	}
	elseif (is_month()) { // архивы (по месяцам)
		echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> &amp;raquo; ';
		echo get_the_time('F');
	}
	elseif (is_year()) { // архивы (по годам)
		echo get_the_time('Y');
	}
	elseif (is_author()) { // авторы
		global $author;
		$userdata = get_userdata($author);
		echo 'Опубликовал(а) ' . $userdata->display_name;
	} elseif (is_404()) { // если страницы не существует
		echo 'Ошибка 404';
	}
 
	if (get_query_var('paged')) // номер текущей страницы
		echo ' (' . get_query_var('paged').'-я страница)';
 
} else { // главная
   $pageNum=(get_query_var('paged')) ? get_query_var('paged') : 1;
   if($pageNum>1)
      echo '<a href="'.site_url().'">Главная</a> &amp;raquo; '.$pageNum.'-я страница';
   else
      echo 'Вы находитесь на главной странице';
}
}

Я специально оставил комменты в коде (зелёным цветом), то есть, если вы например не используете архивы на своём сайте, то можете удалить ненужные для вас с 40-й по 51-ю строчки. Вопросы оставляйте в комментариях.

Кстати, видел на других блогах функцию хлебных крошек длиной в 5-10 строк 🙂 Люди копипастят даже не задумываясь, понятно, что у них очень урезанные варианты.

Миша

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю, но с 2019 выступаю только на тех, которые сам организовываю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

Комментарии 21

  • Алекс1 ноября 2011 #

    реально, это самая полная версия крошек из всех, которые я видел на других сайтах! Спасибо 🙂

  • Ксана10 июня 2012 #

    Михаил, прочитала ваш блог "от корки до корки".

    У вас не только талант в программировании, но и явный преподавательский талант.

    Все, даже сложные вещи, вы описываете просто и понятно.

    Я читала и восторгалась - не верится, что вам всего 20 лет.
    Какой вы умница!

    Нашла на вашем блоге несколько полезных рецептов.

    Спасибо!

    • Миша10 июня 2012 #

      Спасибо) приятно)

  • serj13 ноября 2012 #

    Миша, предлагаю тему для статьи в категорию Юзабилити:

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

    Имхо многим пригодится.

    • Миша14 ноября 2012 #

      хорошо, буду иметь ввиду)

      • serj14 ноября 2012 #

        и еще имейте ввиду) хотелось бы увидеть побольше статей о похожих записях(чтобы были статические они).

        Вам же надо наполнять кат. "Юзабилити" 🙂

        С нетерпением жду. Спасибо

        п.с. когда заглянуть?

      • Миша15 ноября 2012 #

        кат юзабилити скоро удалю на самом деле)
        загляни в течение недели)

  • serj15 ноября 2012 #

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

    • Миша16 ноября 2012 #

      если ты подписался на обновления, то её не пропустишь)

  • Роман12 сентября 2013 #

    Доброе время суток!
    Все отлично, но по этим ссылкам из хлебных крошек, вес уходит со страницы. Не подскажите, как ссылки закрыть в нофолов, чтобы вес не терялся, а все крошки в ноиндекс, чтобы не было переспама, так как в крошках идет повторение текста заголовка записи?

    • Миша12 сентября 2013 #

      Добрый день,
      ajax

      • dezm02111 мая 2014 #

        здравствуйте, хорошая работа, спасибо,

        подскажите, пжл как можно подгрузить хлебные крошки через ajax - как делаю, добавил ваш код в functions.php и создал новый файл и создал новую страницу где применил этот шаблон, но получилось что я через аякс просто на просто подтягиваю те хлебные крошки к которым относится созданный шаблон, то есть на всех страницах у меня получаются хлебные крошки

        Главная -> Ajax - the_breadcrumb

        • Миша11 мая 2014 #

          Добрый день!
          про ajax в WorPress можно почитать здесь truemisha.ru/blog/wordpress/admin-ajax.html

          если всё равно ничего не будет получаться, обращайтесь.

        • Виктор4 августа 2014 #

          удалось реализовать?

  • Ольга2 января 2014 #

    Вот я и "доросла" до "хлебных крошек"... Установила себе их на сайт твоим, Миша, способом. Перепробовала всё, но хотела без плагина и попроще в настройках. Твой вариант действительно РАБОТАЕТ на 100%. Спасибо тебе, огромное. Только вот хотела спросить: твой сайт в поиске Гугл выводится так: сайт > блог > категория. А у меня тоже так будет? Просто я проверила у меня выводится одна ссылка, не видно "крошек". Может просто должно пройти время, чтобы Гугл это заметил?

    • Миша2 января 2014 #

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

      • Ольга2 января 2014 #

        Буду с нетерпением ждать такой "обновки"!!! Читаю все новые статьи и возвращаюсь к прежним. Хотя многого ещё не понимаю... (((

        • Миша3 января 2014 #

          Со временем обязательно во всём разберётесь 🙂 Желаю удачи!
          Отпишусь после обновления поста.

  • Виктор4 августа 2014 #

    Автору большое спасибо. Но опять возникает вопрос по скрытию через АЯКС - вывод работает, но страница определяется совершенно неправильно 🙁
    Если комуто удалось решить эту проблему буду премного благодарен

  • Алексей14 августа 2015 #

    Почему то возникла проблема , не работает, отображает так:
    Главная » Ремонт ПК » Ремонт компьютера

    Вместо стрелочек отображает

     &raquo;
    • Миша14 августа 2015 #

      Вероятно у вас заменилось

      &raquo;

      на

      &amp;raquo;

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.