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

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

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

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

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

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

Breadcrumb для постов

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

Breadcrumb для страниц

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

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

Реализация

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

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

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

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

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

Для постов:

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

Рендеринг HTML:

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

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

Для страниц:


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

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

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

Переводим (русифицируем) плагин для wordpress

Январь 22, 2010 г.

Допустим вы написали плагин для wordpress. Что дальше? Можно ли как то расширить аудиторию пользователей, чтобы стяжать ещё большую славу :)? Ответ, конечно же, - да, можно. Иначе этой статьи  бы не было. Расскажу, как сделать и подключить файлы переводов ...

Читать

Удаление фильтра в WP, когда callback - метод класса плагина

Август 17, 2017 г.

При программировании в WP мы очень часто добавляем какие то фильтры и действия. А если посмотреть в код любого плагина - это сборники реализаций зацепок. Не всегда авторы дают возможность гибко управлять поведением их плагина через настройки. Тогда ...

Читать

Обновление Inactive User Deleter — v 1.31

Май 2, 2017 г.

Кроме дополнительных фильтров, был добавлен режим удаления пользователей с оповещением по email. Новый режим позволяет не удалять пользователей ...

Читать

Добавляем в редактор Wordpress дополнительные поля загрузки картинок

Август 2, 2019 г.

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

Читать
 

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

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



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