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 WP: https://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