Cum aplici mai multe skin-uri pe un site folosind selectorul de "template-uri" prin schimbarea fișierelor de stil?
Abia încep să mă familiarizez cu template-urile și am câteva întrebări.
În primul rând, ideal ar fi ca template-urile mele să folosească aceeași structură ca tema principală, dar să utilizeze doar un fișier de stil diferit și imagini diferite.
În prezent, modalitatea prin care permit schimbarea aspectului site-ului este prin schimbarea fișierelor de stil.
Am pur și simplu un folder în tema mea principală numit "styles", iar sub acesta am câte un folder pentru fiecare "skin". În fiecare folder de skin se află un fișier style.css împreună cu câteva imagini.
Funcționează astfel: am introdus niște cod în fișierul header.php al temei mele principale, astfel încât să citească valoarea skin-ului activ din baza de date de opțiuni, apoi încarcă fișierul de stil pentru acel skin astfel...
// Încarcă fișierul CSS al skin-ului activ
$active_skin = get_option('active_skin');
wp_enqueue_style('active-skin', get_template_directory_uri() . '/styles/' . $active_skin . '/style.css');
În exemplul de mai sus, skin-ul activ este "skin1", așa că încarc întotdeauna:
"...mytheme/styles/". get_option('active_skin') ."/style.css"
Acest lucru funcționează extrem de bine și îmi permite să plasez un widget simplu de schimbare a skin-ului (un meniu derulant cu afișare thumbnail) în fișierul functions.php pentru a permite administratorului să schimbe ușor între mai multe skin-uri care modifică complet aspectul site-ului.
Frumusețea acestei abordări este că tema selectată și structura de markup rămân neschimbate, astfel încât pot crea o varietate de stiluri folosind markup predictibil. Cam ca în CSS Zen Garden. Același markup, mii de designuri. Tot ce se schimbă este fișierul de stil și imaginile.
Totuși, un dezavantaj al acestei abordări (cel puțin în WordPress) este că skin-ul selectat se aplică întregului site. Nu pot aplica un skin pe pagina principală și un alt skin pe o pagină specială care ar putea avea nevoie de un aspect complet diferit.
Dacă ar exista o metodă de a adăuga ceva cod în fiecare folder de skin astfel încât să apară în meniul derulant "template-uri" din editorul de pagini, aș putea face exact ceea ce doresc.
Este posibil acest lucru?

Desigur, este posibil. Calea rapidă ar fi să adăugați un câmp personalizat la postmeta (în zona „Câmpuri personalizate” din pagina Editare Postare/Editare Pagină) și în tema dumneavoastră să obțineți valoarea folosind get_post_meta().
Calea puțin mai puțin rapidă ar fi să adăugați un wrapper la această valoare a Câmpului Personalizat prin plasarea selectorului temei într-un meta box pentru postare.

Mă uitam la descoperirea automată a șabloanelor de pagini pentru o altă întrebare, și se pare că WordPress interzice în mod explicit fișierele de șabloane în subdirectoare. Va trebui să abordați problema altfel, cum ar fi folosind câmpuri personalizate așa cum a sugerat gabrielk, sau să oferiți o interfață pentru aceleași câmpuri meta folosind cutii meta personalizate în administrare.
