Jak utworzyć własny typ wpisów (CPT) w WordPressie?

WordPress oferuje dwa typy wpisów, domyślnie są to wpisy (post) oraz strony (page). W większości mniejszych projektów, które wykonujemy w oparciu o WordPressa dwa domyślne typy wpisów w zupełności nam wystarczają, ale jeśli chcemy zbudować katalog produktów, albo zaprezentować kilkadziesiąt zrealizowanych projektów to zawsze korzystamy z własnych typów wpisów – „custom post type„.

Od około 2-3 lat staramy się logicznie budować strukturę serwisów, które oddajemy naszym klientom. W większości rozbudowanych projektów wpisy ze względu na typ dzielimy w następujący sposób:

  • Post – aktualności, wpisy do prowadzenia bloga firmowego
  • Page – podstrony statyczne, np. O Firmie, Misja, Dojazd, Kontakt
  • CPT – własne typy wpisów – niestandardowe zbiory, np. realizacje, galerie, katalog produktów, promocje itd.

Własne typy wpisów w WordPress

Za przykład weźmy sytuację, w której chcemy na naszej stronie zbudować katalog projektów, w którym będą znajdować się zrealizowane projekty firmy.

A więc, do dzieła!

Rejestrujemy nowy typ wpisów „projekty”, w tym celu otwieramy plik functions.php i wklejamy poniższy kod.

Oczywiście możesz go dowolnie zmodyfikować i dostosować do własnych potrzeb.

/* New Custom Post Type in WP */

function wplab_projekty_cpt() {
    $labels = array(
        'name'                => __( 'Projekty'),
        'singular_name'       => __( 'Projekt'),
        'menu_name'           => __( 'Projekty'),
        'parent_item_colon'   => __( 'Nadrzędny projekt'),
        'all_items'           => __( 'Zobacz wszystkie'),
        'view_item'           => __( 'Zobacz projekt'),
        'add_new_item'        => __( 'Dodaj projekt'),
        'add_new'             => __( 'Dodaj nową'),
        'edit_item'           => __( 'Edytuj projekt'),
        'update_item'         => __( 'Zaktualizuj projekt'),
        'search_items'        => __( 'Szukaj projekt'),
        'not_found'           => __( 'Nie znaleziono'),
        'not_found_in_trash'  => __( 'Nie znaleziono')
    );
    $args = array(
        'label'               => __( 'projekty'),
        'description'         => __( 'projekty'),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields'),
        'public'              => true,
        'hierarchical'        => false,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'has_archive'         => true,
        'can_export'          => true,
        'exclude_from_search' => false,
        'yarpp_support'       => true,
        'taxonomies' 	      => array('post_tag'),
        'publicly_queryable'  => true,
        'capability_type'     => 'page',
        'show_in_rest' => true
    );
    register_post_type( 'projekty', $args );
}
add_action( 'init', 'wplab_projekty_cpt', 0 );

Sporo argumentów co nie? Ale nie ma czego się bać. Najważniejsze argumenty, które warto skonfigurować to:

  • label – unikalna nazwa wpisu, tak jak domyślne wordpressowe „page”, „post”
  • supports – domyślnie 'title’ oraz 'editor’, ale tutaj mamy możliwość określenia jakie widżety w formularzu dodawania wpisu będzie wspierać nowy CPT, możemy włączyć dodatkowe widżety, które znamy z domyślnych wpisów:
'title'
'editor'
'author'
'thumbnail'
'excerpt'
'trackbacks'
'custom-fields'
'comments'
'revisions'
'page-attributes'
'post-formats'
  • has_archive – domyślnie wyłączone (false), ale jeśli chcemy korzystać z archiwów dla tworzonego CPT to warto zmienić na „true”

Dla zainteresowanych polecam lekturę Codex WP gdzie jak większość funkcji, tak i rejestracja nowych typów wpisów obszernie została omówiona – zajrzyj tutaj.

Po nadpisaniu pliku na serwerze w panelu administratora powinna pojawić się nowa zakładka „Projekty”.

Jeśli jednak edycja i modyfikowanie plików to dla Ciebie czarna magia, to możesz skorzystać z kreatora CPT „Custom Post Type UI” i szybko wygenerować własne typy wpisów z poziomu kokpitu WP. Wtyczka dostępna jest w repozytorium WPhttps://pl.wordpress.org/plugins/custom-post-type-ui/ Nie mnie jednak jeśli lubisz mieć kontrolę nad projektem, który wychodzi spod Twojej marki – zachęcam do pracy w motywie, w pliku functions.php!

Na dzisiaj to tyle! W kolejnym wpisie pokaże jak poprawnie dodać taxonomię do naszego nowego typu wpisów!

Jeśli masz jakiekolwiek pytania, wątpliwości pisz śmiało na hello@wp-lab.pl

Marcin Guzik

Marcin Guzik

Zafascynowany WordPressem. Użytkownik WP od 2008 roku, od wersji 2.4, albo 2.5 (nie pamiętam dokładnie). Piszę na: mrcng.pl. Zawodowo: jestem właścicielem Net-Factory. Prywatnie: mąż, ojciec, instruktor karate.

Opieka i serwis stron internetowych

Zajmij się swoim biznesem a my zajmiemy się Twoją stroną. Zapewniamy stałą opiekę oraz wyspecjalizowany serwis dla stron na WordPress oraz sklepów internetowych WooCommerce.

Wybierz coś dla siebie