19 Nov, 2008 | Artykuły, WordPress
Załóżmy, że na blogu mamy trzy kategorie – Rozrywka, Kultura i Sport. Strona główna naszego bloga pokazuje oczywiście wpisy z wszystkich trzech kategorii. Początkujący użytkownicy WP bardzo często zadają pytanie – jak sprawić, aby wpisy z danej kategorii były wizualnie odmienne od pozostałych?
Rozwiązanie tego problemu sprowadza się do napisania własnej funkcji i wpięciu jej w odpowiednie miejsce w [1] pętlę WordPressa.
Wszystkie wpisy w WP objęte są w kodzie HTML pojemnikiem div
z klasą post
(oczywiście pod warunkiem, że korzystamy z domyślnej skórki).
Jako, że do elementu w HTML możemy przypisać wiele klas CSS rozdzielonych spacjami, wystarczy że dodamy odpowiednie klasy do postów z odpowiednich kategorii – dzięki czemu będziemy mogli nadać im odmienne style.
Chcemy uzyskać coś takiego:
|
Zadanie generowania właściwych klas CSS w zależności od kategorii, w której znajduje się wpis powierzymy funkcji generuj_css()
, którą zdefiniujemy w pliku functions.php
:
|
Kluczowym elementem naszej funkcji jest wykorzystanie wewnętrznej funkcji WP get_the_category()
. Jest ona bardzo podobna do standardowej funkcji the_category()
, z tą różnicą, że zamiast wyświetlać kategorie do których należy wpis zwraca je w formie tablicy. Tak samo jak w przypadku the_category()
– aby zadziałała prawidłowo musi zostać umieszczona w ramach WordPressowej pętli.
Jeśli np. wpis należy tylko do kategorii Kultura get_the_category()
zwraca następującą jednoelementową tablicę:
|
Tablica ta jest o tyle ciekawa, że jej elementem jest obiekt, który zawiera praktycznie wszystkie informacje dotyczące danej kategorii, z których możemy skorzystać. W funkcji generuj_css()
skorzystaliśmy z pola slug
, które idealnie nadaje się jako nazwa klasy (nie zawiera spacji i polskich znaków).
Do listy generowanych klas CSS dopisujemy również klasę bedącą nazwą użytkownika autora konkretnego wpisu, aby możliwe było np. dołączenie odpowiedniego zdjęcia do wpisu. Wykorzystaliśmy funkcję get_the_author()
, która zwraca login autora danego wpisu w postaci łańcucha tekstowego.
Napisaną funkcję wpinamy w pętlę WP w następujący sposób:
|
Okazuje się, że wraz z nadchodzącą wersją 2.7 pojawia się w pętli WP nowa funkcja post_class()
, która robi dokładnie to samo co napisana przez nas funkcja generuj_css()
a nawet więcej!
Aby skorzystać z jej dobrodziejstw, zamieniamy w pętli fragment:
|
na:
|
Od tej pory wpisom zostaną przypisane odpowiednie klasy CSS w zależności od tego w jakiej znajdują się kategorii, jak są otagowane i czy są tzw. wpisami przyklejonymi (nowość w WP 2.7):
category-kultura
– taka klasa zostanie przypisana do wpisu z kategorii Kulturatag-smieszne
– taka klasa zostanie przypisana do wpisu z tagiem śmiesznesticky
– taka klasa zostanie przypisana do przyklejonego wpisu (ang. sticky post)Co ciekawe, jeśli do listy klas generowanych przez funkcje post_class()
klas chcemy dopisać własną klasę, wystarczy podać łańcuch tekstowy z nazwami klas jako argument. Czyli jeśli chcielibyśmy dopisać klasę będącą nazwą użytkownika autora wpisu możemy to zrobić w ten sposób:
|
Mam nadzieję, że powyższe informacje ułatwią wam eksperymenty z wyglądem WordPressowych wpisów.
-----
Wydrukowano z: https://www.kminek.pl/wordpress-jak-nadac-odmienny-styl-wpisom-z-konkretnej-kategorii-lub-konkretnego-autora/
Lista adresów URL występujących w tekście:
© 2007-2025 kminek.pl