Хлебные крошки для WordPress без плагина

Всем привет!

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

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

Хлебные крошки для WordPress без плагина

Как вы уже наверняка знаете, практически все в WordPress можно реализовать как с помощью плагина, так и без его использования. В данной статье я расскажу о том, как сделать «хлебные крошки» не прибегая к использованию плагина.

Как сделать хлебные крошки WordPress без плагина?

Делается все довольно просто и всего в 2 этапа.

На первом этапе необходимо добавить функцию этих самых «хлебных крошек» (англ. — breadcrumbs) в ваш шаблон WordPress, для чего в файл functions.php (в самый конец перед ?>) шаблона вставить следующий код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
function breadcrumbs() {
$showOnHome = 0; // 1 - показывать "хлебные крошки" на главной странице, 0 - не показывать
$delimiter = '»'; // разделить между "крошками"
$home = 'Главная'; // текст ссылка "Главная"
$showCurrent = 1; // 1 - показывать название текущей статьи/страницы, 0 - не показывать
$before = '<span class="current">'; // тег перед текущей "крошкой"
$after = '</span>'; // тег после текущей "крошки"
 
global $post;
$homeLink = get_bloginfo('url');
 
if (is_home() || is_front_page()) {
 
if ($showOnHome == 1) echo '<div id="crumbs"><a href="' . $homeLink . '">' . $home . '</a></div>';
 
} else {
 
echo '<div id="crumbs"><a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' ';
 
if ( is_category() ) {
global $wp_query;
$cat_obj = $wp_query->get_queried_object();
$thisCat = $cat_obj->term_id;
$thisCat = get_category($thisCat);
$parentCat = get_category($thisCat->parent);
if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
echo $before . single_cat_title('', false). $after;
 
} elseif ( is_day() ) {
echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
echo $before . get_the_time('d') . $after;
 
} elseif ( is_month() ) {
echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
echo $before . get_the_time('F') . $after;
 
} elseif ( is_year() ) {
echo $before . get_the_time('Y') . $after;
 
} elseif ( is_single() && !is_attachment() ) {
if ( get_post_type() != 'post' ) {
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' ';
if ($showCurrent == 1) echo $before . get_the_title() . $after;
} else {
$cat = get_the_category(); $cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
if ($showCurrent == 1) echo $before . get_the_title() . $after;
}
 
} elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
$post_type = get_post_type_object(get_post_type());
echo $before . $post_type->labels->singular_name . $after;
 
} elseif ( is_attachment() ) {
$parent = get_post($post->post_parent);
$cat = get_the_category($parent->ID); $cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a> ' . $delimiter . ' ';
if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
} elseif ( is_page() && !$post->post_parent ) {
if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
} elseif ( is_page() && $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 . ' ' . $delimiter . ' ';
if ($showCurrent == 1) echo $before . get_the_title() . $after;
 
} elseif ( is_search() ) {
echo $before . 'Результаты поиска по запросу "' . get_search_query() . '"' . $after;
 
} elseif ( is_tag() ) {
echo $before . 'Записи с тегом "' . single_tag_title('', false) . '"' . $after;
 
} elseif ( is_author() ) {
global $author;
$userdata = get_userdata($author);
echo $before . 'Статьи автора ' . $userdata->display_name . $after;
 
} elseif ( is_404() ) {
echo $before . 'Error 404' . $after;
}
 
if ( get_query_var('paged') ) {
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
echo __('Page') . ' ' . get_query_var('paged');
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
}
 
echo '</div>';
 
}
}

На втором этапе необходимо сделать так, чтобы добавленная нами функция запускалась там, где нужно. Для этого необходимо добавить в файлы single.php, page.php, archive.php, search.php шаблона следующий код:

1
<?php if (function_exists('breadcrumbs')) breadcrumbs(); ?>

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

1
<div id="content">

То есть как показано на рисунке:

Хлебные крошки для WordPress без плагина

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

Напоследок добавлю, что разработчиком данной функции является известный блоггер Dimox.

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

С уважением, Владимир Денисов!

Ищешь заработок в Интернете? Записывайся на бесплатный онлайн курс «СПЕЦИАЛИСТ ПО ИНТЕРНЕТ-РЕКЛАМЕ» и получи удаленную профессию рекламщика в Яндекс Директ за 10 дней!

Также стоит прочитать:

Красивая форма подписки feedburner для WordPress... Всем привет! Сегодня поменял внешний вид формы подписки на обновления моего...блога, реализованной через такой сервис Google, как feedburner. Именно по этой...причине в данной статье я расскажу о создании красивой формы подписки feedburner...для WordPress.
Картинки в комментариях. Плагин Comment Images... Здравствуйте, читатели моего блога! Речь в данной статье пойдет о плагине для...WordPress, который позволяет вставлять изображения в комментарии. Разумеется,...это не единственный способ выполнения данной операции, ведь уже размещенное в...интернете изображение можно вставить в комментарий с использованием ссылки не...него. Однако, для этого изображение должно быть размещено в интернете, а...какое-либо стороннее изображение, к примеру, с жесткого диска вашего компьютера,...добавить не удастся. В этом случае на помощь приходит плагин.
Галерея изображений стандартными средствами WordPr... Всем привет! В сегодняшней статье я хочу затронуть вопрос создания простой...галереи изображений для WordPress стандартными средствами данной CMS.
Простой способ изменить фон для WordPress сайта!... Всем привет! Сегодняшняя статья будет наиболее интересна новичкам, которые...хотят изменить или установить фон для своего сайта/блога на WordPress, ведь в...ней я расскажу об одном быстром и простом способе сделать фон для своего...интернет-ресурса.
Всплывающие картинки в WordPress без плагина... Всем привет! Про то, как сделать всплывающие картинки в WordPress я уже писал в...одной из своих статей, но там речь шла о...применении специального плагина. Логично будет рассмотреть способ получения...аналогичного результата без установки дополнительных плагинов. Именно об этом мы...и поговорим в рамках сегодняшней статьи.

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

  • Ничего себе кодик 😮 Никогда раньше не задумывался о хлебных крошках, хотя частенько слышу от разных блогеров разные советы.Так вот сейчас из-за вас я обращу на это больше внимание.У меня в шаблоне скорей всего уже предусмотрена эта функция, так как отражается перед заголовком прошедшая статья, но… не отражается рубрика и главная как у вас на картинке! Наверно попробую сейчас внести этот код, посмотрим что произойдёт, спасибо!

    • Игорь, код и действительно впечатляет своим объемом 🙂 ! Попробуйте, все должно получиться, только не лишним будет сделать резервные копии файлов!

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

    • Игорь, абсолютно не загрузили 🙂 !
      В зависимости от того, где хотите отображать хлебные крошки, вставлять код нужно в соответствующие файлы. Я добавил во все перечисленные.
      На счет конструкции вы абсолютно правы, в некоторых шаблонах она может быть другой и надо смотреть по ситуации. Если нужна помощь, то скиньте мне на e-mail какой-нибудь из перечисленных файлов, попробую разобраться 😉

  • Владимир, здравствуйте. Спасибо за статью, но так как у меня шаблон повернутый на всю голову, то даже и пытаться не буду. А вот на будущее пригодиться. ➡

    • Здравствуйте, Андрей ➡ ! Да уж, специфичный шаблон порой значительно затрудняет выполнение самых простых действий.

  • Владимир,сделал все как описано вами в статье!Вставил все коды во все файлы и… никакого изменения!Как было так и осталось 😮

  • Владимири,конечно же так просто не разобратся!! Я поискал похожие статьи на вашу в интернете и там была абсолютно такая же информация,поэтому скорей всего проблема в самом шаблоне.Лично мое мнение такое: ведь я сказал что в моем шаблоне уже предусмотрены такие функции так как выводятся хлебные крошки(по минимуму) поэтому наверно уже существует похожий код и когда я добовляю ваш,то коды конфликтуют и ничего не происходит.Как вы думаете,возможен такой вариант? Наверно не буду заморачиваться с этим делом,ведь это не самое главное в блогинге и в бизнесе 😮 Если найду свободное время,так может поковыряюсь там!В любом случае большое спасибо вам за этот пост и за желание помочь ➡

    • Игорь, у вас в шаблоне не «хлебные крошки», а ссылка на предыдущую статью. Скорее всего причина возникновения проблемы не в этом. Предлагаю вам проверить правильность вставки кода в functions.php, а также вставить второй код после конструкции < div class="art-Post-inner art-article" > в файлы вашего шаблона 💡

  • Ладно, возможно решение придет позже! Пожалуйста, Игорь, обращайтесь 🙂 !

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

    • Юрий, не буду утверждать, что наличие хлебных крошек очень важно для сайта, кто-то делает их, а кто-то нет, тут на усмотрение каждого конкретного человека.
      На счет микроразметки не совсем понял, было бы неплохо увидеть на наглядном примере что вы имели виду (видать я чего-то может еще не знаю) 🙂
      В любом случае новичок врядли сможет разобраться в данном коде, скорее всего он просто его выделит и скопирует, если решит реализовать себе хлебные крошки.

  • А вот напишите мне не понимающему — какой эффект эти крошки дают?
    Они повышают поведенческие факторы, посещаемость или как картина на стене в комнате придает эстетический вид просто?
    Да, прикольно, согласен, но с первого взгляда и не поймешь, если не обратить внимание — есть эти крохи или нет, честно.
    Вот поделитесь опытом, Владимир, у вас кликают по заголовкам от крошек? Вы в вебвизоре анализ делаете? Я иногда прозреваю, когда смотрю куда кликают читатели, а какие кнопки просто игнорят, хотя я их изначально считал супер-пупер-мега нужными для них.
    😐

    • Николай, данные крошки предназначены скорее как некий помощник для навигации по сайту.
      В вебвизоре анализ кликов по ним не проводил, вообще Яндекс.Метрику только недавно себе установил.
      Если честно, то какого-либо вреда или пользы от них я не заметил, а раз уж так, то действовал на свое усмотрение и оставил их.

  • А! Так вот, что это за «крошки» такие! А я всё слышу: «Хлебные крошки-хлебные крошки». Думаю, что за ерунда. А код действительно замороченный. Может лучше плагин использовать?

    • С точки зрения простоты реализации конечно проще воспользоваться плагином, но во всем остальном использование кода предпочтительнее. Код в файлах плагина наверняка даже сложнее представленного)

  • У меня при установке возникла проблема :cry:, вместо Главная » отображались крякозябры, немножко погуглив проблема была решена. Через notepad++ открыл файлы single.php, page.php, archive.php, search.php и сохранил в UTF-8 (без Вом). ➡

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.