Wordpress — какую выбрать стратегию работы с шаблонами под конкретный раздел?
Бэкграунд: только начинаю с WP, до этого всегда делал сайты на разных MVC фреймворках.
Простая задача: на сайте нужно создать 2 + N раздела
1 раздел – "О нас". Страницы этого раздела: "О компании", "Какие мы классные".
2 раздел – "Котики". Страницы: "Белые котики", "Рыжие котики".
3 раздел – ... и т.д.
+ всякие разные страницы, у которых будет другое количество блоков и оформление (это к вопросу о шаблонах для Pages).
Требуемый функционал: заходим в раздел, видим вступительный текст этого раздела и дальше список со ссылками на страницы раздела.
Заходим в страницу этого раздела и видим: информацию этой страницы + в сайдбаре, опять же, список со ссылками на остальные страницы раздела.
Как я понимаю, есть 3 варианта действий
1. Делать с помощью типа постов Pages. Применять Page Templates.
Плюсы: решается задача. Минусы: если делать Page Templates глобальными, то юзеры могут (в теории) что-то намудрить и выбрать неправильный шаблон для страницы. Если делать таргетированно, то это бесконечный копипаст.
2. Делать с помощью Posts + categories.
Не совсем пока понял как выбрать/cоздать шаблон который будет применяться ко всем постам обладающим определённой категорией.
Нашел пару вариантов, но они мутные и завязаны на кучу IF-ов в файле функций. = чем больше категорий и разделов, тем более отвратительным будет этот код условий.
3. Делать для каждого раздела свой custom post type
Не будет ли это оверкилом? Зато никаких проблем, всё должно работать насколько я могу судить.
Вариант 1, имхо. Если речь о нескольких "разделах", а по сути родительских страницах, с несколькими детишками. 2й вариант - костыль. 3й имеет смысл тогда, когда custom post type требует автономности, собственных taxonomies, отдельной структуры урл, общего UI для метаданных, гибких запросов и тд. Ну и обычно когда элементов в этом post type планируется больше чем 2-4.
Что касается шаблонов страниц и "копипасты" - не совсем понятно что вы имеете в виду, в чем опасения. Детализируйте эту проблему, постараюсь подсказать.
я имел ввиду, что судя по документации можно сделать "большой и глобальный" шаблон для страниц, который можно будет выбрать через админку. А можно наделать page-{slug}.php и WP будет юзать их при совпадении. Но это копипаст. P.S. там в общем особых опасений нет, просто решил указать для доп.информации. Как-то так.
RNB: Почему покипаст? Есть же get_template_part(). Разбиваете на компоненты, делаете себе мини-конструктор, и просто включаете-выключаете нужные блоки. Никакой копипасты, полный reuse кода. Для проверок есть conditionals.