Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu
  • О чем это все
Menu

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

14.01.200913.01.2010

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

breadcrumb

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

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

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

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

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>";

        }

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

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

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

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'); }

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

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

<?php my_breadcrumb(); ?>

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

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

14 комментариев

  1. blogmedika:
    11.02.2009 в 10:44

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

    Ответить
  2. blogmedika:
    11.02.2009 в 10:50

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

    Ответить
    1. dreamhelg:
      11.02.2009 в 11:01

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

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

      Ответить
    2. dreamhelg:
      16.02.2009 в 11:05

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

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

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

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

      Ответить
  3. akm:
    12.02.2009 в 11:58

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

    Ответить
  4. dreamhelg:
    12.02.2009 в 12:02

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

    Ответить
  5. blogmedika:
    17.02.2009 в 13:58

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

    Ответить
    1. dreamhelg:
      17.02.2009 в 14:07

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

      Ответить
  6. Зайва Игорь Леонидович:
    18.02.2009 в 21:36

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

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

    Ответить
    1. dreamhelg:
      19.02.2009 в 08:11

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

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

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

      Ответить
  7. Зайва Игорь Леонидович:
    18.02.2009 в 21:39

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

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

    Ответить
  8. Руслан:
    07.07.2011 в 17:29

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

    Ответить
  9. Сергей:
    08.12.2011 в 11:04

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

    За исключением одной незначительной неприятности: В медиабиблиотеке, когда нажимаю под картинкой «Просмотреть», — выходит ошибка: 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:
    27.10.2019 в 11:03

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

    Ответить

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

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

Об авторе

avatar

Ольга Фомина

Senior Frontend Developer
Почтовые технологии
telegram youtube instagram vkontakte

Рубрики

  • angular
  • JavaScript
  • nodejs
  • svg
  • wordpress
  • верстка
  • изучаем Jquery
  • общая
  • переводы
  • плагины Jquery
  • юнит-тесты
© 2023 Очередной блог фрилансера | Powered by Superbs Personal Blog theme