Онилайт
с 9:00 до 21:00
info@onilite.ru

ЧПУ для нового типа записей и таксономий в WordPress

Виктор Черников
26.11.2019

Задача

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

А также настроить для них ЧПУ (человеку понятные url-адреса) следующего вида:

domain/catalog/category/
domain/catalog/category/tovar/
domain/catalog/category/sub-category/
domain/catalog/category/sub-category/tovar/

Решение

Используйте следующий код в function.php или в своём плагине:

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

Разъяснения

Вся сложность создания таких url заключается в том, что система не может выдавать записи и таксономии одновременно через одинаковый слаг (в нашем случае catalog). Происходит это из-за того что для записей и таксономий создаются абсолютно одинаковые правила декодирования url-адресов, так называемые «правила перезаписи».

Правила перезаписи — Это регулярные выражения, помогающие распозновать url-адрес и подключить необходимый шаблон страницы.
Правила хранятся в таблице базы данных wp_options, где option_name = rewrite_rules.

Чтобы преодолеть эту сложность, необходима функция создания таких правил и функция их перезаписи. Функция перезаписи должна срабатывать при создании/изменении/удалении таксономий для чего используем хуки WordPress.

Интересно почитать

Выпадающее меню на jquery

Как работает меню Данное выпадающее меню на jquery раскрывается по клику мыши на кнопку меню…

Создание Landing Page

Landing Page (лендинг пейдж) — переводится как посадочная страница или ещё её называют целевая…

Комментарии и отзывы

Ещё нет комментариев к данной записи...


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

Для комментирования в один клик необходим вход или регистрация.

Заявка на обратную связь
Нажимая на кнопку, вы даете согласие на обработку персональных данных
+7 (937) 245-81-91
с 9:00 до 21:00
info@onilite.ru