Częstym pytaniem zadawanym przez początkujących programistów pracujących z WordPressem, jest możliwość dodania swojego typu postów. W tym wpisie spróbuję pokazać prawidłowy, a jednocześnie prosty i szybki sposób na dodawanie custom posta. Zacznijmy od tego, co to jest custom post i do czego można go użyć.
Jak dodać custom post w WordPressie?
Custom post to nic innego jak unikalny rodzaj treści w WordPressie. Jeśli zastanawiasz się do czego może Ci się przydać, spróbuję to pokazać na przykładzie tego bloga.
Aktualnie mój WP ma tylko domyślne posty, których listę możecie zobaczyć tutaj.
W przyszłości poza zwykłymi wpisami blogowymi, chciałbym dodawać np. portfolio, recenzje wtyczek, opinie klientów czy krótkie i przydatne kody. Pomoże mi w tym custom post.
Zacznijmy od tego, że jest na to kilka metod. Często wybieraną jest skorzystanie z wtyczek wyposażonych w taką możliwość. Nie będę tu pisał o plusach i minusach tego rozwiązania, jeśli nie macie awersji do wtyczek, śmiało. Ja pokażę Ci, jak zrobić to „ręcznie”.

Wyjaśnijmy teraz to co ważniejsze:
label – nazwa Twojego postu, ja będę dodawał kody, więc wpisuję Kod
labels – tu wstawiamy arraya, którego zaraz pokażę jak stworzyć
supports – tu wpisujesz, jakie elementy ma mieć Twój nowy typ postu, czyli np. tytuł, edytor treści, miniaturka, zajawka
taxonomies – zostawmy póki co domyślną, potem do tego wrócimy
hierarchical – ustalamy czy nasz nowy typ postu ma być hierarchiczny
has_archive – czy WordPress ma stworzyć domyślne archiwa dla tego typu postu
Na końcu wykonujemy funkcję register_post_type z parametrami ( 'slug custom postu', Twój array ). Wróćmy teraz do arraya, który u mnie nazywa się labels.

U mnie wygląda on tak. Definiujemy tu jak ma nazywać się nasz typ postu (w liczbie mnogiej i pojedynczej), jak mają nazywać się archiwa, przyciski dodawania nowych kodów itd. W podanym przeze mnie generatorze możesz to wszystko pouzupełniać a na koniec kliknąć „Update code” a strona wygeneruje Ci cały gotowy kod, który wklejasz w functions.php. U mnie całość kodu wygląda w ten sposób.

Zobaczmy co się stanie. Wchodzimy w panel WP i szukamy nowej zakładki.

Mamy to! Wchodzimy w kody, klikamy dodaj nowy i patrzymy jak to wygląda.
Twoim oczom powinien się ukazać widok podobny do dodawania nowego wpisu. W zależności od tego, co wpisałeś w wartości „supports” będziesz mógł uzupełnić różne pola. Pojawił się jednak jeden problem. Kategorie, które mamy do wyboru są tymi samymi kategoriami, które przydzielane są dla wpisów. Musimy więc stworzyć oddzielny podział dla naszego nowego typu postu – taksonomię.
Taksonomia – co to jest?
W wyjaśnieniu tego terminu niech posłuży nam Wikipedia: „Taksonomia – nauka o zasadach i metodach klasyfikowania”. Powinno nam to trochę rozjaśnić sprawę. W WordPressie taksonomia to sposób, w jaki będziemy klasyfikować posty. Podstawowymi domyślnymi taksonomiami w WP są np. kategorie i tagi. W budowie różnią się ona hierarchicznością. Kategorie mogą być nadrzędne i podrzędne natomiast tagi nie.
Jak stworzyć taksonomię w WordPressie
Taksonomie są niezwykle przydatne gdy tworzymy nowy typ postu. Poza uzyskaniem czystej i przejrzystej klasyfikacji, możemy zaimplementować na stronie np. filtrowanie po taksonomii. Weźmy tutaj mój przykład. Chcę dodawać kody w różnych językach programowania. żeby wszystko było przejrzyste wypadałoby zrobić kilka rodzajów klasyfikacji – chcemy rozróżnić kody po stopniu zaawansowania, po języku i po poziomie. Jeśli wykorzystamy do tego podstawową taksonomię – kategorie, będzie to nieprzejrzyste i mocno ograniczające rozwiązanie. Gdy stworzymy odpowiednie taksonomie, w prosty sposób będziemy mogli przefiltrować posty typu „kod” po którymś z wymienionych parametrów.
Nie będę tutaj rozpisywał się o tym, kiedy należy tworzyć taksonomie i czy zawsze są potrzebne. To wszystko zależy od konkretnego przypadku i nie ma na to jasnej odpowiedzi, skupię się zatem na stronie technicznej.

W pierwszym polu (kategoria-kody) nazywamy naszą taksonomię.
Kolejne pole to typ postu, dla którego tworzymy taksonomię.
W kolejnym polu wstawiamy arraya z następującymi danymi:
label – Pod jaką nazwą ma się dana taksonomia wyświetlać
rewrite – ustalamy slug; pod takim adresem będą się wyświetlać poszczególne taksonomie – w moim przypadku będzie to adres „/kody/jakaśtaksonomia/”
hierarchical – czy ma być hierarchiczna
Na koniec oczywiście dodajemy akcję z funkcją i sprawdzamy co się stało.

Jak widać, udało nam się utworzyć custom posta z taksonomią. Jeśli nie chcemy, aby nasz nowy typ postu współdzielił kategorie z domyślnymi wpisami, wróćmy jeszcze na chwilę do kodu. Funkcja tworząca nowy typ postu -> array „args” -> pole „taxonomies”. Widzimy tam wartość „category”, usuwamy to i wpisujemy nazwę, naszej nowo stworzonej taksonomii. Pokazuję na obrazku.

W moim przypadku jest to kategoria-kody. Pamiętaj, że musisz tu wpisać podaną wcześniej nazwę taksonomii.
Pierwszy etap masz za sobą – stworzyłeś nowy typ postu z taksonomią. Brawo! Podejrzyjmy dodawanie postu.

Wypełniamy dane, klikamy Opublikuj i…

Co się stało? Czy coś zrobiliśmy źle?
Oczywiście że nie, został tylko jeden krok. Wejdź w kokpit Twojego WordPressa, wybierz z menu Ustawienia->Bezpośrednie odnośniki. Teraz wróć na stronę swojego postu i odśwież stronę.

Działa, tylko dlaczego? Jako junior powiem Ci tyle – nie wiem. Na którejś z grup WordPressowych nauczyłem się tego tricku właśnie gdy nie działała mi strona custom posta. Jak nie działa coś co działać powinno, wejdź w Bezpośrednie odnośniki. Nie zawsze pomaga, ale, jak widać na przykładzie, tym razem się udało!
Aktualnie Twój WordPress wyświetla custom posta w standardowym wyglądzie wpisu – plik single.php. Jeśli chcesz zobaczyć, jak zrobić swój plik do wyświetlania nowego typu postów, zaglądaj na mojego bloga. W ciągu kilku najbliższych dni ukaże się wpis, w którym pokażę Ci jak zrobić to i nie tylko.
PS. Drodzy Seniorzy WP. Jestem juniorem, jak gdzieś się pomyliłem, kajam się i przepraszam. Piszcie, a poprawię.
