Jakiś czas temu poszukiwałem rozwiązania, aby nieco urozmaicić swojego poprzedniego bloga. Chciałem, aby każda ze stron kategorii (archive.php) i postów (single.php) miały inny szablon. Rozwiązanie dla kategorii jest bardzo proste. Wystarczy wgrać na serwer, do folderu szablonu pliki o nazwie category-ID.php – gdzie „ID” odpowiada numerowi kategorii / lub category-NAME.php, gdzie „NAME” to nazwa kategorii.
Aby sprawdzić id dla danej kategorii, wystarczy w panelu administracyjnym, wejść na zakładkę „wpisy”, a następnie „kategorie”. Najeżdżając kursorem na nazwę danej kategorii, w pasku na dole przeglądarki zobaczymy link. Na przykład na moim blogu dział „wordpress” ma id 4, link więc wygląda tak „categories.php?action=edit&cat_ID=4”. Numer na końcu oznacza jej „id”, w tym przypadku jest to numer 4. Jeśli więc chciałbym, aby dział „wordpress” o numerze id=4 wyglądał inaczej niż reszta kategorii wystarczy, że stworzysz szablon zapisując go w pliku category-4.php / lub category-wordpress.php.
Z szablonami dla wpisów danej kategorii też nie ma wielkiego problemu, ale musimy troszkę kombinować. W pliku single.php musimy wgrać następujący kod:
<?php
$post = $wp_query->post;
if (in_category('1')) {
include(TEMPLATEPATH.'/single1.php');
} elseif (in_category('3')) {
include(TEMPLATEPATH.'/single3.php');
} elseif (in_category('4')) {
include(TEMPLATEPATH.'/single4.php');
} else {
include(TEMPLATEPATH.'/single_default.php');
}
?>
W miejsce numeru w kodzie:
if (in_category(’4’)) { wpisujemy numer id dla danej kategorii wpisów. Według poprzedniego przykładu „4”, to id dla wpisów z kategorii „wordpress”. Następnie podajemy nazwę pliku php
include(TEMPLATEPATH.’/single4.php’);
w którym tworzymy własny szablon – w typ przypadku single-4.php. Powtarzamy tę czynność dla tylu kategorii ilu chcemy. Te kategorie, które mają korzystać z domyślnego szablonu zapisujemy do pliku pod nazwą single_default.php, za który odpowiada kod:
include(TEMPLATEPATH.’/single_default.php’); .