Standardowo WordPress ma dwa rodzaje zawartości. Są nimi Wpisy i Strony. Nie oznacza to jednak, że nie możesz utworzyć własnych, np. Portfolio, gdzie będziesz dodawać wpisy z Twojego portfolio, albo Wydarzenia z wpisami na temat Zaraz Zaraz zbliżających się imprez, itd, itp.
Taka organizacja pozwoli Ci lepiej kontrolować co gdzie jest publikowane, popełnisz mniej pomyłek, a do tego będziesz jeszcze mógł wprowadzić własne pola opisu, np. w przypadku wydarzeń może to być data startu imprezy, organizator, koszt biletów i inne.
Zacznijmy jednak od własnego rodzaju treści, a własne pola zostawimy na inny raz.
Własny rodzaj zawartości
Są dwa podstawowe sposoby na utworzenie własnej zawartości w WordPress.
Fragment kodu
Najszybszym jest prosty poniżej widoczny kod, który wystarczy skopiować i wkleić do pliku functions.php motywu potomnego. Jeśli takiego motywu nie masz, a boisz sie eksperymentować, możesz użyć wtyczek takich jak CodeBox czy Code Snippets.
W naszym przykładzie dodajemy nowy rodzaj zawartości Portfolio, ale Ty możesz stworzyć jakikolwiek inny. Wystarczy, że słowa portfolio w poniższym kodzie zamienisz na inną nazwę, np.: katalog, przepis itp...
function create_post_type() {
register_post_type( 'portfolio',
array(
'labels' => array(
'name' => __( 'Portfolio' ),
'singular_name' => __( 'Portfolio' )
),
'public' => true,
'has_archive' => true,
)
);
}
add_action( 'init', 'create_post_type' );
Jeśli wstawisz powyższy kod, a następnie wrócisz do backendu WordPressa zobaczysz nagle coś takiego 😀

Czy to już? Tak, już :) To najprostszy sposób na stworzenie własnej zawartości bez wspomagania się wtyczkami. Jeśli nie potrzebujesz specyficznych pól, to tak na dobrą sprawę to co zrobiliśmy mogłoby wystarczyć.
Dołożysz do tego szablony FSE (na razie jeszcze w powijakach) albo Elementora PRO z Theme Builderem i możesz portfolio całkiem fajnie zaaranżować.
Rozbudowa fragmentu kodu
Powyższy przykład kodu umożliwia dodanie własnego rodzaju zawartości. W pewnych sytuacjach może się okazać (zazwyczaj tak jest), że czegoś w nim jednak brakuje. Masz możliwość wpisania tytułu i możliwość wprowadzenia treści bazując na klasycznym edytorze. Czy coś więcej? Spójrz:

W prawej kolumnie są opcje związane z publikacją, a gdzie obrazek wyróżniający, gdzie taksonomie? Zaraz do tego dojdziemy.
Dodajemy edytor blokowy
Co musisz zrobić, aby edytor klasyczny zmienić na edytor blokowy? Wystarczy prosty zabieg polegający na dodaniu do naszego kodu takiego drobiazgu:
'show_in_rest' => true,
'supports' => array('title','editor'),
A oto rezultat:

Kosmetyczny zabieg i edytor blokowy jest aktywny, ale jak widzisz wciąż nie ma możliwości dodania obrazka wyróżniającego, a to dosyć przydatny gadżet :)
Cały nasz kod wygląda teraz tak:
function create_post_type() {
register_post_type( 'portfolio',
array(
'labels' => array(
'name' => __( 'Portfolio' ),
'singular_name' => __( 'Portfolio' )
),
'show_in_rest' => true,
'supports' => array('title','editor'),
'public' => true,
'has_archive' => true,
)
);
}
add_action( 'init', 'create_post_type' );
Dodajemy obrazek wyróżniający
Obrazek wyróżniający w WordPress to najważniejszy plik graficzny publikacji. To właśnie on może wyświetlać się w archiwach czyli na stronach z listą artykułów. Jest to element często wykorzystywany więc i w naszym przypadku nie może go zabraknąć.
Aby go dodać wzbogać tablicę support o element thumbnail. W naszym wypadku będzie to wyglądało tak:
'supports' => array('title', 'editor', 'thumbnail')
W konsekwencji tego działania zobaczysz taki oto efekt, gdy tylko spróbujesz dodać nowy wpis do naszego przykładowego Portfolio:

Dodajemy pole zajawki, komentarze i historię zmian
Nie w każdej sytuacji te opcje są potrzebne. Jeśli jednak w Twoim przypadku istotna jest możliwość ręcznego kontrolowania zajawek. Chcesz dać możliwość komentowania poszczególnych wpisów, a także korzystać z opcji przywrócenia jednej z poprzednich jego wersji, wystarczy wzbogacić tablicę support o kolejne wartości: 'excerpt', 'comments' i 'revisions'
'supports' => array('title','editor', 'thumbnail', 'excerpt', 'comments', 'revisions')
Kolejna kosmetyka i kolejne sekcje dostępne w edytorze.

Dodajemy pozostałe elementy
Mamy już całkiem sporo, ale można dodać nieco więcej, np. autora, czy wsparcie dla własnych pól, a więc: 'author' i 'custom-fields'.
'supports' => array('title','editor', 'thumbnail', 'excerpt', 'comments', 'revisions', 'author', 'custom-fields')
Teraz nasz pełny kod nowego rodzaju zawartości wygląda tak:
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'portfolio',
array(
'labels' => array(
'name' => __( 'Portfolio' ),
'singular_name' => __( 'Portfolio' )
),
'show_in_rest' => true,
'supports' => array('title','editor', 'thumbnail', 'excerpt', 'comments', 'revisions', 'author', 'custom-fields'),
'public' => true,
'has_archive' => true,
)
);
}
Inne opcje
Jeśli zechcesz wykorzystać również inne możliwości konfiguracji własnego rodzaju zawartości, możesz dodać do powyższego kodu następujące opcje:
'hierarchical' => false,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'can_export' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post',
W ten sposób możesz kontrolować dodatkowe cechy, np. ulokować Portfolio w odpowiednim miejscu menu administratora, wykluczyć z wyszukiwarki itd.
Taksonomie
Mamy własny typ zawartości ustawiony zgodnie z naszymi preferencjami i nie użyliśmy do tego żadnej wtyczki (im ich mniej tym lepiej). Ale może się okazać, że nasze portfolio chcielibyśmy móc dodatkowo kategoryzować, a może nawet tagować. Pytanie jak dodać specyficzną taksonomię dla naszego rodzaju zawartości?
Za chwilę dodamy taksonomię hierarchiczną i taksonomię bez hierarchii. Żeby to lepiej zobrazować odwołam się do standardowego rodzaju zawartości jakim są Wpisy w WordPressie. Wpisy możesz podpiąć pod kategorie (taksonomia hierarchiczna) i otagować (taksonomia bez hierarchii). Zaczynamy.
Tworzymy taksonomię hierarchiczną
Do naszego portfolio dodamy kategorie, które będą określały rodzaj wykonanych prac, np. jeśli założymy, że jesteśmy małą firmą reklamową będą mogły to być kategorie typu: Strony WWW, Katalogi, Wizytówki.
Gdybyśmy mieli bloga lub serwis z przepisami kulinarnymi mogłyby to być rodzaje dań, np: Kuchnia Polska, Kuchnia Azjatycka itd...
Aby dla naszego przykładowego portfolio małej agencji reklamowej utworzyć kategorie, musisz dopisać kolejne fragmenty kodu. Rozłożę jego całość na mniejsze części, żeby było Ci łatwiej zrozumieć za co dany fragment odpowiada.
Inicjacja poprzez akcję funkcji tworzącej kategorię
Pisanie kodu zacznij pod poniższej akcji. Wywołuję w niej funkcję, którą nazwałem: create_cat_hierarchical_taxonomy
add_action( 'init', 'create_cat_hierarchical_taxonomy', 0 );
Teraz dodaję wywoływaną funkcję, której zadaniem jest utworzenie taksonomii
To kod wewnątrz tej funkcji zostanie wywołany przez akcję.
function create_cat_hierarchical_taxonomy() {
}
Gdy to mam za sobą pozostaje wyposażyć funkcję we właściwe dane odpowiadające za nazwę taksonomii, jej rodzaj, etykiety i inne parametry. Zaczniemy od etykiet. Wstaw do funkcji poniższy kod: