@solomatin_d
Изучаю WordPress

Как правильно организовать структуру кастомных постов и таксономий?

Добрый день.
Переношу большой региональный портал с объектами инфраструктуры на WordPress. Нужно мнение профессионала по проектированию системы хранения данных.

Имеются категории объектов:
  • Питание
  • Проживание
  • Достопримечательности
  • ...

Всего 10 категорий, предполагаю сделать каждую категорию как отдельный тип кастомного поста.

У каждой категории объектов есть свой набор фильтров:
  • Питание
    • Вид заведения: кафе, ресторан, столовая
    • Услуги: Wi-Fi, Оплата картой
    • ...

  • Проживание
    • Тип: Гостиница, Гостевой дом
    • Линия: 1-линия, 2-линия
    • ...

  • Достопримечательности
    • Тип: Парки, Музеи
    • ...

  • ...
    • ...


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

Каждый объект, вне зависимости от категории и набора фильтров привязан к определенном городу. Город по сути является таким же свойством фильтра. Предполагаю выполнить в виде одной таксономии привязанной ко всем кастомным типам постов. Города иерархичны, основной город -> сателлиты, но это можно опустить в обсуждении.

Результатом фильтрации внутри любой категории является список объектов, которые соответствуют выбранным свойствам и городу (или всем городам).

Требование:
Каждая категория в Городе А, Городе Б, ... и на странице "Все города" должна давать возможность редактировать текст + title + meta;
Каждая категория с выбранным или не выбранным городом, с любым набором свойств фильтра должна давать возможность редактировать текст + title + meta;

Задачи:
  1. Питание (Все города) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
  2. Питание (Все города + Кафе) - можно указать текст + title + meta в редактирования терма "Кафе";
  3. Питание (Все города + Кафе + WiFi) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
  4. Питание (Город А) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
  5. Питание (Город А + Кафе) - нет места, где можно указать текст + title + meta в предложенной мною структуре;
  6. Питание (Город А + Кафе + 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)
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 1
@weart
Если будете использовать это в каком-то самописном кастомном фильтре по мета-выборке, сайт уйдет в даун. Запросы будут по 3-8 секунд и постоянные висяки.
Вообще, все же я использовал этот подход в последнем проекте, чтобы клиенту удобно было заполнять контент "категорий", сделанных как CPT. Но чтобы быстро работала фильтрация, пришлось все необходимые для нее данные перенести в кастомную таблицу и с ней работать.

Например, добавляю пост и тут выбираю CPT трех видов:

5ef8db128c865330720994.png

При сохранени поста нужные данные добавляются в мою простую таблицу:

5ef8db427a947261217739.png

И из нее я беру данные для такого функционала:

5ef8dc021d03a339824909.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы