WordPress и хлебные крошки

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

breadcrumb

И вот создавая очередной шаблон для WordPress, передо мной встала задача создания такой навигации в шаблоне.

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

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

Я не буду переводить статью дословно, сразу переду к сути. Автор статьи, написал скрипт, создающий довольно простую навигацию хлебных крошек:

[php]
function my_breadcrumb() {
if ( !is_front_page() ) {
echo ‘<p class="breadcrumb"><span class="breadcrumb_info">You are here:</span> <a href="’;
echo get_option(‘home’);
echo ‘">’;
bloginfo(‘name’);
echo "</a> &raquo; ";
}

if ( is_category() || is_single() ) {
$category = get_the_category();
$ID = $category[0]->cat_ID;
echo get_category_parents($ID, TRUE, ‘ &raquo; ‘, FALSE );
}

if(is_single() || is_page()) {the_title();}
if(is_tag()){ echo "Tag: ".single_tag_title(”,FALSE); }
if(is_404()){ echo "404 – Page not Found"; }
if(is_search()){ echo "Search"; }
if(is_year()){ echo get_the_time(‘Y’); }

echo "</p>";

}
[/php]

Автор использует условные теги WP, для проверки какую рубрику, запись или страницу мы просматриваем в данный момент. Скрипт не выводит навигацию, если мы находимся на главной странице.

[php]
if ( is_category() || is_single() ) {
$category = get_the_category();
$ID = $category[0]->cat_ID;
echo get_category_parents($ID, TRUE, ‘ &raquo; ‘, FALSE );
}
[/php]

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

[php]
if(is_single() || is_page()) {the_title();}
if(is_tag()){ echo "Tag: ".single_tag_title(”,FALSE); }
if(is_404()){ echo "404 – Page not Found"; }
if(is_search()){ echo "Search"; }
if(is_year()){ echo get_the_time(‘Y’); }
[/php]

Здесь все довольно просто, используются условные комментарии для указания различных сценариев скрипта, таких как переход по метке, комментарию, архиву за месяц, 404 страница и др.

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

[php]
<?php my_breadcrumb(); ?>
[/php]

В результате мы получили очень легкую версию скрипта навигации breadcrumb (хлебные крошки), без установки каких-либо дополнительных плагинов.

Оригинал статьи


Posted

in

by

Comments

14 responses to “WordPress и хлебные крошки”

  1. blogmedika Avatar

    Здорово! Спасибо большое за статью, вставил у себя в блог этот скрипт. Результат можно посмотреть в любом посте в моем блоге. 🙂

  2. blogmedika Avatar

    Появился вопрос – как сделать так, чтобы текст ссылки на главную брался не с титла главной, а самому туда написать, что хочешь?

    1. dreamhelg Avatar
      dreamhelg

      В первом абзаце вместо:
      bloginfo('name');

      можно написать:
      echo "Любой текст";

    2. dreamhelg Avatar
      dreamhelg

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

      в первой строчке последнего абзаца:

      if(is_single() || is_page()) {the_title();}

      внутри скобок the_title(), добавтье в кавычках через запятую открывающий и закрывающий тэг:
      пример

  3. akm Avatar
    akm

    неплохо, но с включёнными пермалинками не работают архивы)(type=”monthly”)

  4. dreamhelg Avatar
    dreamhelg

    может быть, автор скрипта говорил о том что это очень простая реализация хлебных крошек

  5. blogmedika Avatar

    dreamhelg, спасибо, все работает! Теперь посмотрим, будет ли эффект в плане повышения Pr

    1. dreamhelg Avatar
      dreamhelg

      почаще пишите интересные статьи, и будет хороший Pr, а хлебные крошки это небольшое дополнение

  6. Зайва Игорь Леонидович Avatar

    Код можно сразу в сайдбар воткнуть без всяких функций и инклюдов, а вот в индексе он у меня чего-то не заработал, инклюдом тоже не прокатило… 🙁 Убрал пока…
    Еще не получилось заменить почему-то цепочку ешо одной командой… как сделать?

    echo get_option(‘home’); echo ‘”>’; bloginfo(‘name’); echo “ » “;

    1. dreamhelg Avatar
      dreamhelg

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

      echo get_option(’home’).">".bloginfo(’name’).">" Вроде бы должно работать, но не проверяла, не знаю.

      Плагин для комментов обязательно сегодня поставлю.

  7. Зайва Игорь Леонидович Avatar

    блин, извиняюсь, забыл дописать.

    Поставьте, пожалуйчта, плагин “подписаться на комменты”, а то постоянно заходить проверять не удобно… Чего никто не ставит ???

  8. Руслан Avatar
    Руслан

    Здравсвуйте, а как добавить последней ссылке в крошках,какой нибудь id ,чтоб можно было стиль можно было применить?

  9. Сергей Avatar
    Сергей

    Спасибо! Да, все прекрасно работает))

    За исключением одной незначительной неприятности: В медиабиблиотеке, когда нажимаю под картинкой “Просмотреть”, – выходит ошибка: Catchable fatal error: Object of class WP_Error could not be converted to string in /home/…/functions.php on line 56

    А эта самая строчка 56 выглядит так: echo get_category_parents($ID, TRUE, ' » ', FALSE );

    В остальном – все нормально)) Как можно исправить?

    Заранее благодарю за ответ!

  10. MagazinSite.ru Avatar

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

Leave a Reply

Your email address will not be published. Required fields are marked *