Jak utworzyć nowy typ zawartości w WordPress

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 😀

Nowy rodzaj treści w kokpicie WordPress

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:

Wygląd klasycznego edytora WordPress

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:

Wygląd edytora blokowego Gutenberg

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:

Widok edytora blokowego po dodaniu obrazka wyróżniającego jako elementu własnego rodzaju treści

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.

Widok edytora blokowego z sekcją zajawki i opcją aktywacji komentarzy,

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:

Ten artykuł ma dalszą część. Chcesz przeczytać całość?

Zarejestruj się bezpłatnie, aby przeczytać ten post do końca oraz mieć dostęp do wszystkich innych wpisów dla zarejestrowanych subskrybentów.
Udało Ci się zapisać do Wooj
Świetnie! Przejdź teraz do kasy, aby uzyskać pełny dostęp do wszystkich treści premium.
Błąd! Nie można się zarejestrować. Nieprawidłowy link.
Witamy ponownie! Udało Ci się zalogować.
Błąd! Nie można się zalogować. Proszę spróbować ponownie.
Sukces! Twoje konto zostało w pełni aktywowane, masz teraz dostęp do wszystkich treści.
Błąd! Transakcja Stripe nie powiodła się.
Sukces! Twoje dane rozliczeniowe zostały zaktualizowane.
Błąd! Aktualizacja informacji rozliczeniowych nie powiodła się.