Добрый день.
Переношу большой региональный портал с объектами инфраструктуры на WordPress. Нужно мнение профессионала по проектированию системы хранения данных.
Имеются категории объектов:
- Питание
- Проживание
- Достопримечательности
- ...
Всего 10 категорий, предполагаю сделать каждую категорию как отдельный тип кастомного поста.
У каждой категории объектов есть свой набор фильтров:
- Питание
- Вид заведения: кафе, ресторан, столовая
- Услуги: Wi-Fi, Оплата картой
- ...
- Проживание
- Тип: Гостиница, Гостевой дом
- Линия: 1-линия, 2-линия
- ...
- Достопримечательности
- ...
Для каждой категории свой набор фильтров, до 10 свойств, предполагаю сделать в виде кастомных таксономий, каждое свойство - отдельная таксономия. Таксономии привязываются к конкретному типу поста.
Каждый объект, вне зависимости от категории и набора фильтров привязан к определенном городу. Город по сути является таким же свойством фильтра. Предполагаю выполнить в виде одной таксономии привязанной ко всем кастомным типам постов. Города иерархичны, основной город -> сателлиты, но это можно опустить в обсуждении.
Результатом фильтрации внутри любой категории является список объектов, которые соответствуют выбранным свойствам и городу (или всем городам).
Требование:
Каждая категория в Городе А, Городе Б, ... и на странице "Все города" должна давать возможность редактировать текст + title + meta;
Каждая категория с выбранным или не выбранным городом, с любым набором свойств фильтра должна давать возможность редактировать текст + title + meta;
Задачи:
- Питание (Все города) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
- Питание (Все города + Кафе) - можно указать текст + title + meta в редактирования терма "Кафе";
- Питание (Все города + Кафе + WiFi) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
- Питание (Город А) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
- Питание (Город А + Кафе) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
- Питание (Город А + Кафе + WiFi) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
Решение, которое на данный момент мне кажется самым оптимальным:
1. Создать для каждой категории кастомный тип страниц "SEO_категория" (именно page, чтобы потом использовать иерархию для порядка).
2. Прикрепить те таксономии, которые используются в конкретной категории.
3. В таксономии "Города" создать терм "Все города".
4. Создавать страницы проставляя нужные термы. Чтобы не путаться в наборах, то для первого свойства фильтра сделать родительские страницы и уже в них накидывать дочерние.
При таком подходе не придётся загонять клиента в редактирование дескрипшенов термов, и он всегда сможет использовать Gutenberg.
Правильно ли я использую возможности WP? И что вы думаете о такой структуре?
Как выглядит структура сейчас, на самописной CMS ликвидированной web-студии:
Ничего необычного, можно не ознакамляться
Все города [папка]
- Питание (текст + title + meta) [запись]
- Проживание (текст + title + meta) [запись]
- Достопримечательности (текст + title + meta) [запись]
Объекты [папка]
- Город А [папка]
- - Питание (в редактировании папки указывается текст + title + meta)[папка]
- - - Объект 1 [запись]
- - - Объект 2 [запись]
- - Проживание [папка]
- - - ... [запись]
- - Достопримечательности [папка]
- - - ... [запись]
- Город Б
- - Питание (в редактировании папки указывается текст + title + meta)[папка]
- - - Объект 1 [запись]
- - - Объект 2 [запись]
- - Проживание [папка]
- - - ... [запись]
- - Достопримечательности [папка]
- - - ... [запись]
Фильтры [папка]
- Питание [папка]
- - Вид заведения [папка]
- - - Ресторан [запись]
- - - Кафе [запись]
- - - Столовая [запись]
- Проживание [папка]
- - ... [папка]
- - - ... [запись]
- Достопримечательности [папка]
- - ... [папка]
- - - ... [запись]
Тексты для наборов фильтров [папка]
- ... (указывается ссылка с get параметрами фильтра и вносятся текст + title + meta) [запись]
На уровне "Все города" решается: Питание (все города)
На уровне "Объекты" решается: Питание (Город А)
На уровне "Тексты для наборов фильтров" решается: Питание (все города + Кафе + WiFi) и Питание (Город Б + Кафе + WiFi)