Выводим страницу вместо рубрики в хлебных крошках Вордпресс

Опубликовано 3 года назад

Самый простой и универсальный способ вывести страницу вместо базовой рубрики в хлебных крошках плагина Yoast SEO, JetBlocks и других.

Неблагодарное это дело переделывать за кем-то сайты. Особенно если этот кто-то не особо вникал в задачу, а так, наставил костылей и сдал проект.

Не буду сильно углубляться в задачу, опишу кратко суть. На сайте представлены некие продукты, их архивы рубрик собраны в конструкторе в виде страниц. Я так не делаю и всегда использую нативные механизмы Вордпресс: завожу новые сущности (CPT) и таксономии. Это классический и единственный верный путь без подводных камней. Кастомные страницы с архивами записей обычно делают в разных конструкторах типа Элементора, WPBakery. Там для этого есть специальные блоки, которые выводят любые архивы на любых страницах. Этот путь проще в реализации, но могут всплыть разные нюансы. Например, с хлебными крошками. Вместо соответствующих страниц с архивами там будут ссылки на нативные архивные темплейты из темы. И скорее всего визуально они будут сильно отличаться от тех страниц, что были собраны в конструкторе.

Я столкнулся с тем, что почти у всех продуктов вместо базовой рубрики в хлебных крошках выводилась та самая статичная страница с архивом, а у некоторых (в т.ч. у вновь создаваемых) дефолтный архив рубрики. Путём логических исключений выяснилось, что родитель в хлебных крошках запрятан глубоко в БД (WP_postmeta). Тем же способом была выявлена и реализация всего этого разврата.

Решение

Оказалось все очень просто, для решения задачи нужен всего лишь один маленький, но не самый очевидный плагин Post Type Switcher.

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

Post Type Switcher: хлебные крошки
Post Type Switcher: хлебные крошки

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

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

Кстати, не забудьте запретить индексацию нативных архивов рубрик. Я, например, в 99% случаях запрещаю индексацию абсолютно всех архивов таксономий. Ещё лучше совсем их отключить.

В качестве альтернативы

Пока я писал эту статью, мне пришёл в голову ещё один способ решения этой задачи с помощью редиректов. Можно оставить в крошках ссылки на нативные архивы рубрик, а в .htaccess сделать 301-е редиректы на свои страницы рубрик. Если их много, можно пойти дальше и создать для редиректов правило с помощью регулярных выражений. Таким образом, редактору сайта не потребуется совершать никаких дополнительных действий при добавлении новых продуктов.

Иван Данилин
Автор Иван Данилин

Фулстек веб‑разработчик, специализируюсь на платформе WordPress

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