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

"Все аспекты самостоятельного создания и продвижения сайтов
от практика с многолетним опытом." — блог Рудь Сергея
info@site-on.net
Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!
22.12.2013

Доброго времени суток! В последнее время мне довелось довольно часто работать с Вордпрессом, поэтому хочу поделиться с вами своими наработками на эту тему.

Любой плагин Wordpress, как и расширения в Joomla, создают дополнительную нагрузку на сервер и замедляют загрузку страниц. Более того, в обоих CMS нам необходимо следить за обновлениями плагинов (расширений), а особенно за обновлениями безопасности.

Поэтому, если вы знакомы с PHP и JS и в состоянии написать свою альтернативную версию того или иного расширения, то настоятельно рекомендую это делать. При этом совсем необязательно оформлять ваше творение как полноценное расширение (плагин), вы можете просто поместить код в нужное место страницы.

Чтобы создать хлебные крошки (breadcrumbs) на своём Wordpress портале я решил установить популярный плагин Breadcrumb NavXT, но потом мне понадобилось ускорить загрузку страниц. В числе множества других мероприятий, я решил сделать самый простой и лаконичный вариант (максимально быстрый) breadcrumbs, без использования стилизации и лишнего кода. Им я и хочу с вами поделиться:

Хлебные крошки для Wordpress

function the_breadcrumb() {
    echo '<div id="breadcrumb"><ul><li><a href="/">Home</a></li><li>></li>';

    if ( is_category() || is_single() ) {
        $cats = get_the_category();
        $cat = $cats[0];
        echo '<li><a href="'.get_category_link($cat->term_id).'">'.$cat->name.'</a></li><li>></li>';
    }

    if(is_single()){
        echo '<li>';
        the_title();
        echo '</li>';
    }

    if(is_page()){
        echo '<li>';
        the_title();
        echo '</li>';
    }

    echo '</ul><div class="clear"></div></div>';
}

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

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

<?php the_breadcrumb(); ?>

В созданной мной теме Wordpress макет главной страницы находится в одном файле .php, а макет внутренних страниц в другом. Поэтому данный код я поместил только на внутренние страницы, так как на главной навигация не нужна.

А вот и CSS:

#breadcrumb li{list-style:none;display:inline-block;margin-right:5px;}

Коротко и лаконично, особенно по сравнению с установкой плагина, что даёт нам максимум производительности.

Также, у меня была проблема, что в breadcrumbs ссылка на категории была вида:
http://домен/category/имя-категории

Если у вас такая же проблема, то вместо предыдущего кода, скопируйте в functions.php этот:

function the_breadcrumb() {
    echo '<div id="breadcrumb"><ul><li><a href="/">Home</a></li><li>></li>';
    if (is_category() || is_single()){
        $cats = get_the_category();
        $cat = $cats[0];
        echo '<li><a href="'.str_replace('/category','',get_category_link($cat->term_id)).'">'.$cat->name.'</a></li><li>></li>';
    }

    if(is_single()){
        echo '<li>';
        the_title();
        echo '</li>';
    }

    if(is_page()){
        echo '<li>';
        the_title();
        echo '</li>';
    }

    echo '</ul><div class="clear"></div></div>';
}

На этом всё, спасибо за внимание!

С уважением, .
Пожалуйста, оцените эту статью
Средняя оценка: 3.5 из 5 (проголосовало: 18)
Статья оказалась вам полезной? Подпишитесь, чтобы не пропустить новые!

Ваш email:
Вы можете помочь развитию проекта, сделав всего 1 клик:
Спасибо!
Пожалуйста, прокомментируйте, как Вам моя статья?
Имя:
Комментарий:

Если Вы хотите вставить код, пожалуйста, заключайте его в [code][/code]

Подписаться на новые комментарии:

E-mail:


Защита от спама: у треугольника три...
Ответ:
Подписаться на новые комментарии без комментирования - Email:
Защита от спама: у треугольника три...
Ответ:

14.04.2014 22:58:59 commentator:
Спасибо, хороший способ. Только на страницах категорий не хочет выводить хлебные крошки... не подскажете, как это исправить?
15.04.2014 09:11:13 Сергей отвечает:
Добрый день.
<?php the_breadcrumb(); ?>
Вставляли в шаблон категорий? На сколько я помню нужно вставить в page.php, в single.php, в category.php, archive.php.
15.04.2014 21:05:35 commentator отвечает:
немного тупанул.. отображается, только неправильно:
Главная > Категория >
при этом Категория ссылается сама на себя

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


29.06.2014 20:14:27 Виталий:
не работает с под-рубриками
Например есть рубрика с названием "Цвета",
у неё есть подрубрики "градации серых" и "цветные".
В серых расположены страницы: "серая 1","серая 2"
В цветных расположены страницы: "красная 1","зелёная 1"
Так вот если находишься на странице "зелёная 1", то показывает
Home > Цвета > зелёная 1
а должна показывать:
Home > Цвета > цветные > зелёная 1
В коде ошибка.
16.10.2014 13:44:51 Некто отвечает:
Точно так, есть такая проблема...увы

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


31.07.2014 11:27:19 Наталья:
После копирования вашего кода в файл с функциями сайт выдает ошибку, что это ошибочный код
02.11.2014 12:19:42 Марина отвечает:
нарушили разметку, синтаксис.

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


18.08.2014 12:35:57 Дмитрий:
При вставке <?php the_breadcrumb(); ?> в page.php есть ли возможность исключить какую-нибудь конкретную страницу по её ID?
Спасибо!
19.08.2014 22:37:12 Сергей отвечает:
Есть :)
if($id != 2){
the_breadcrumb();
}


Как узнать текущий id читайте в документации.

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


16.12.2014 01:55:34 Дмитрий:
Сергей, подскажите пожалуйста, как сделать чтобы рубрика не ссылалась сама на себя? Я вижу в комментариях есть такой вопрос, но ответа нет. Я в принципе понимаю, что скорее всего для category и single нужно делать отдельно if, но так как не силен в программировании, то не знаю как сделать. Подскажете?

Спасибо,
Дмитрий

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


06.11.2015 11:42:44 Игорь:
Спасибо. Всё работает, а как быть если структура состоит не из рубрик, а из страниц
к примеру
главная - страница BMW - дальше страницы по видам машин.
в верху в адресе пишет как надо главная/БМВ/3 серия, а код пишет главная-3 серия. пропадает вложенность страниц - прошу помочь

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

Использую для работы
Мои расширения
Свежие статьи
Рекомендую
Горячо обсуждаемые
Подписка
  • Следовать в twitter:
  • Подписаться по RSS:
  • Подписаться по E-mail:
  • Следить ВКонтакте:
  • Следить на Facebook:
Пользовательское соглашение об условиях использования сайта и Политика конфиденциальности
Перепечатывание или копирование материалов сайта (текста, изображений и другого содержимого) для их публичного или коммерческого использования в сети Интернет, либо в печатных изданиях строго запрещены. При нарушении данного правила, с нашей стороны будут предприняты соответствующие меры, вплоть до судебной жалобы.
© site-on.net
Шрифт: +стандартно-