Как применить несколько скинов к сайту через селектор "шаблоны" с помощью переключения таблиц стилей?
Я только начинаю разбираться с шаблонами и у меня есть несколько вопросов.
Во-первых, в идеале мои шаблоны используют ту же структуру, что и основная тема, но с другой таблицей стилей и изображениями.
В настоящее время я изменяю внешний вид сайта с помощью переключения таблиц стилей.
У меня есть папка "styles" в основной теме, а внутри нее - отдельные папки для каждого "скина". В каждой папке скина находится файл style.css и некоторые изображения.
Система работает так: я добавил код в header.php основной темы, который читает значение активного скина из базы данных опций и загружает соответствующую таблицу стилей:
// Получаем активный скин из настроек
$active_skin = get_option('active_skin');
// Подключаем стили выбранного скина
wp_enqueue_style('skin-style', get_template_directory_uri() . '/styles/' . $active_skin . '/style.css');
В приведенном примере активный скин - "skin1", поэтому всегда загружается:
"...mytheme/styles/". get_option('active_skin') ."/style.css"
Это работает отлично и позволяет мне добавить виджет переключения скинов (выпадающее меню с миниатюрами) в function.php, чтобы администратор мог легко переключаться между разными скинами, полностью меняющими внешний вид сайта.
Преимущество этого подхода в том, что выбранная тема и разметка остаются неизменными, поэтому я могу создавать различные стили, используя предсказуемую разметку. Как в CSS Zen Garden - та же разметка, тысячи дизайнов. Меняются только таблица стилей и изображения.
Однако недостаток этого подхода (по крайней мере в WordPress) в том, что выбранный скин применяется ко всему сайту. Я не могу применить один скин к главной странице и другой - к специальной странице, которой может потребоваться совершенно другой внешний вид.
Если бы существовал способ добавить код в каждую папку скина, чтобы он появлялся в выпадающем меню "Шаблоны" в редакторе страниц, я мог бы сделать именно то, что хочу.
Возможно ли это?

Конечно, это возможно. Быстрый способ — добавить произвольное поле в постмету (в разделе "Произвольные поля" на странице редактирования записи/страницы) и в вашей теме получить значение с помощью get_post_meta().
Чуть менее быстрый способ — обернуть это значение произвольного поля, разместив селектор темы в метабоксе записи.

Я только что рассматривал автоматическое обнаружение шаблонов страниц для другого вопроса, и оказалось, что WordPress явно запрещает файлы шаблонов в подкаталогах. Вам придётся найти другой способ, например, использовать пользовательские поля, как предложил gabrielk, или предоставить интерфейс для тех же метаполей с помощью пользовательских метабоксов в админке.
