Pod koniec ubiegłego roku (2021) opublikowałem artykuł o tym, jak w prosty sposób stworzyć w WordPressie własne typy postów (Custom Post Types). Niedawno dostałem pytanie, jak można dla własnego typu postów stworzyć różny wygląd postu, zależnie od tego, do jakiej kategorii będzie przypisany.

Szablon własnego typu postów w WordPressie zależny od…

Korzystając z motywów typu Divi czy Elementor, można zrobić to za pomocą kilku kliknięć, tworząc odpowiednie szablony strony dla danego tupu postu, przypisane do konkretnych kategorii. Ale podobny efekt można uzyskać niezależnie od motywu, za pomocą kilku linijek PHP.

Ten artykuł (poradnik) będzie w pewnym sensie rozwinięciem poradnika o własnych typach postów, o którym wspomniałem na początku, więc będę opierał się na założeniach i informacjach w nim opisanych.

I tak w opisywanym tam przypadku, za wygląd pojedynczego wpisu w ramach własnego typu postów odpowiada plik single-newslog.php, gdzie znajduje się cała struktura HTML, odpowiedzialna za wyświetlenie zawartości postu/wpisu.

Zaczynamy od zmiany nazwy tego pliku (single-newslog.php) np. na single-newslog01.php, oraz utworzeniu – choćby na bazie tego samego pliku – pliku single-newslog02.php z alternatywnym wyglądem. Zależnie od potrzeb.

Kolejny krok, to utworzenie pliku single-newslog.php, ale tym razem bez zawartości związanej z wyglądem (prezentacją treści), a z regułą, która będzie decydować, kiedy i jaki plik wczytać (w naszym przypadku single-newslog01.php lub single-newslog02.php):

<?php
if ( in_category( 123 ) ) {
	include( get_stylesheet_directory() . '/single-newslog01.php' );
} else {
	include( get_stylesheet_directory() . '/single-newslog02.php' );
}

W tym przypadku dla postów należących do kategorii o identyfikatorze 123 będzie wczytywany szablon z pliku single-newslog01.php, a dla pozostałych single-newslog02.php.

Oczywiście jest to wersja z jednym podstawowych warunkiem, ale bez problemu całość można rozbudować o dodatkowe warunki, zależnie od potrzeb.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!