Создание системы хлебных крошек в WordPress

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

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

У меня на сайте преимущественно два типа материалов — это посты в ленте (post) и страницы (page). Эти сущности хоть логически разделены, но хранятся в одной и тоже таблице базы данных. Т.е. деление весьма условное.

Тем не менее страницы не показываются в ленте. И они преимущественно используются в меню. Потому breadcrumbs для post и page имеют разную логику и по разному должны генерироваться.

Но у них есть общее правило, связанное с первым и последним элементами. 1-й элемент — это ссылка на главную страницу, а последний — не является даже ссылкой — это просто название самой страницы.

Breadcrumb для постов

Посты (post) у меня объединяются в категории, и у них могут быть теги. Основную категорию и один из тегов я добавляю в бредкрамб. Вообще, это против правил — т.к. бредкрамб должен отображать иерархию элементов, а не их горизонтальные связи. Но мой сайт — мои правила.

Breadcrumb для страниц

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

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

Реализация

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

Класс BreadcrumbItem — элемент крошки

Это простой DTO (Data Transfer Object) для хранения информации об одном элементе хлебных крошек:

Класс Breadcrumb — генерация и рендеринг

Всего три статические функции — две наполняют массив крошек, и одна производит рендер из этого массива. Рассмотрим их по очереди.

Для постов:

Для страниц из меню:

Рендеринг HTML:

Использование в шаблонах

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

Для страниц:


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

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

Мало букафф? Читайте есчо !

Перенос сайта на wordpress

Октябрь 13, 2015 г.

Перенос сайта на другой движок - это уникальная задача, которую нельзя сделать по шаблону. Надо заметить, что перенос сайта на другой движок возникает ...

Читать

Модуль для WP Counter Integration

Октябрь 30, 2015 г.

На днях собрал модуль для подключения счетчиков на сайт под WP. Он позволяет добавить код Метрики Яши и Аналитики Гоши. Сегодня я его уже записал в репозиторий wordpress.org. Он решает задачу по размещению кода счетчика на страницах сайта, но не ...

Читать

Обновление Inactive User Deleter - v 1.2

Март 29, 2017 г.

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

Читать

Программирование shortcode-s - это просто

Июль 10, 2017 г.

Шоткоды (short codes) - фирменная фишка Wordpress. Они очень популярны, благодаря простоте внедрения новых кодов и легкости использования их редакторами. ...

Читать
 

Комментарии к «Создание системы хлебных крошек в WordPress»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: