Tworzenie niestandardowych typów postów
Opublikowany: 2016-08-23WordPress od dłuższego czasu nie jest „ tylko platformą do blogowania ”. Jedną z kluczowych cech, które pomogły jej przekształcić się w odpowiedni system zarządzania treścią (CMS) są niestandardowe typy postów .
To pierwszy artykuł z trzyczęściowej serii poświęconej niestandardowym typom postów (CPT). Oto tematy, które omówimy w kolejnych dwóch:
- Taksonomie niestandardowe
- Wyświetlanie niestandardowych typów postów (szablony i zapytania)
Ale na razie przyjrzyjmy się bliżej niestandardowym typom postów i sposobom ich konfiguracji.
Co to jest niestandardowy typ posta?
Domyślnie WordPress używa następujących typów postów:
- Poczta
- Strona
- Załącznik
- Rewizja
- Pozycja w menu
Czym więc jest niestandardowy typ posta? Niestandardowy typ postu to w zasadzie post WordPress z niestandardowymi zdefiniowanymi parametrami (pola niestandardowe, niestandardowa struktura kategorii/tagów, …). Klasycznymi przykładami niestandardowych typów postów są: książki, recenzje, referencje, członkowie zespołu, portfolio i tak dalej. Ale możesz go używać do wszystkiego, co wskazuje na rodzaj tworzonej treści.
Dlaczego miałbyś go używać?
Możesz po prostu używać zwykłych postów WP i używać kategorii i tagów, aby oddzielić różne „typy postów”. Ale to nie jest idealne i może prowadzić do dalszych komplikacji . Oto kilka powodów, dla których możesz chcieć użyć niestandardowego typu posta:
- Jeśli chcesz oddzielić niektóre treści od innych dostępnych typów postów w WordPress
- Potrzebujesz niestandardowych pól, które są przeznaczone wyłącznie dla treści, które chcesz opublikować
- Musisz wyświetlać treść inaczej niż inne typy postów (takie jak posty lub strony)
Załóżmy, że piszesz bloga kulinarnego. Zwykle publikujesz krytykę restauracji, ale chciałbyś również opublikować własne przepisy. Przepisy byłyby idealnym , niestandardowym typem posta, ponieważ prawdopodobnie musiałbyś mieć inny układ niż zwykły post. Może również niektóre pola niestandardowe, na przykład składniki. Wraz z wprowadzeniem przepisu CPT , sekcja bloga zawierałaby tylko Twój normalny post, a przepisy miałyby własną sekcję (własna strona archiwum przepisów). Ułatwiłoby to odwiedzającym, którzy chcą tylko przeglądać Twoje przepisy.
W tej serii artykułów stworzymy referencje CPT dla naszego motywu Shaka. Załóżmy, że użytkownik chce mieć stronę, na której może wyświetlać referencje każdego klienta. Chce dodać kilka niestandardowych pól do tego niestandardowego typu postu, a także chce mieć inny układ do wyświetlania tych referencji. Przyjrzyjmy się najpierw, jak zarejestrować niestandardowy typ posta.
Jak stworzyć niestandardowy typ posta?
Istnieją dwa sposoby tworzenia nowego niestandardowego typu posta.
Pierwszą opcją jest użycie wtyczki, która zarejestruje niestandardowy typ posta. Ta metoda jest dobra dla użytkowników, którzy nie są zaznajomieni z kodem PHP. Wprowadzasz tylko potrzebne dane, a wtyczka zajmuje się resztą.
Druga metoda polega na ręcznym zarejestrowaniu niestandardowego typu posta. Oznacza to, że musisz napisać trochę kodu, ale nie panikuj, to dość proste i pokażę ci też fajną sztuczkę.
Stwórz własny typ posta za pomocą wtyczki – w prosty sposób
Jeśli chcesz szybko i łatwo dodać niestandardowy typ postu do swojej witryny, powinieneś użyć wtyczki, która oferuje taką funkcjonalność. Prawdopodobnie najpopularniejszą wtyczką do tego jest Custom Post Type UI, jest darmowy i łatwy w użyciu. Ustawmy to:
- Zainstaluj i aktywuj wtyczkę Custom Post Type UI z pulpitu nawigacyjnego wp-admin,
- Po aktywacji wtyczki, pozycja menu administracyjnego CPT UI będzie dostępna. Przejdź do CPT UI -> Dodaj/edytuj typy postów,
- Tutaj znajdziesz wiele ustawień, które możesz zastosować, aby dostosować swój CPT. Nie omówimy ich wszystkich szczegółowo w tym artykule. Ale obok każdej etykiety ustawienia znajduje się ikona podpowiedzi, która wyjaśnia, co robi każde ustawienie. Ustawmy rzeczy, których potrzebujemy do naszego przypadku użycia (testimonial CPT),
- Wprowadź ślimak: referencje, etykieta w liczbie mnogiej: Referencje i etykieta w liczbie pojedynczej: Referencje,
- Możesz kliknąć przycisk Edytuj dodatkowe etykiety, aby ustawić dokładniejsze etykiety. Ale możemy to pominąć i wrócić, jeśli później zobaczymy problem,
- Wszystkie domyślne ustawienia są w porządku dla naszego przypadku użycia, po prostu dodamy obsługę pól niestandardowych (zaznacz pole wyboru Pola niestandardowe w sekcji Wsparcie),
- Kliknij Dodaj typ posta, aby utworzyć niestandardowy typ posta.
Jak tylko utworzymy niestandardowy typ wpisu, pojawi się nowy element menu Panele kontrolne wp-admin Referencje. Możemy teraz tworzyć nowe referencje ze wszystkimi polami, które zostały wybrane podczas tworzenia niestandardowego typu postu (Tytuł, Edytor, Polecany obraz i Pola niestandardowe).
Moglibyśmy również ustawić taksonomię dla tego niestandardowego typu postu, ale omówimy to w następnym artykule.
Ręczne tworzenie niestandardowego typu postu – związane z kodowaniem
Możesz zadać sobie pytanie: jeśli możesz utworzyć niestandardowy typ posta za pomocą wtyczki, dlaczego ktoś miałby chcieć tworzyć go ręcznie, za pomocą kodu?
Możliwość stworzenia go za pomocą wtyczki jest z pewnością bardzo wygodna , ale są przypadki, w których chciałbyś to zrobić za pomocą kodu. Na przykład, jeśli tworzysz witrynę dla swojego klienta i nie chcesz, aby klient mógł zmienić te ustawienia, lub jeśli nie chcesz instalować jeszcze jednej wtyczki do swojej witryny. Ponadto, jeśli chcesz utworzyć motyw (lub motyw podrzędny) do użytku w wielu witrynach, łatwiej jest zarejestrować niestandardowy typ postu w kodzie niż powtarzać kroki wtyczki dla każdej witryny. Każda metoda ma swoje plusy i minusy, więc musisz zdecydować, co jest najlepsze w twoim przypadku.
Kod do tworzenia niestandardowego typu posta można umieścić bezpośrednio w motywie (w functions.php ). Możesz też utworzyć nową wtyczkę i umieścić tam kod CPT. To również jest pytanie dzielące społeczność WordPressa. Jedna strona mówi, że powinien znajdować się we wtyczce , aby w przypadku zmiany motywu dane CPT pozostały (ale dane wyjściowe są pozbawione stylu i nie wyglądają dobrze w nowym motywie). A druga strona uważa, że lepiej umieścić kod CPT bezpośrednio w motywie , ponieważ jest on specyficzny dla motywu i jest również stylizowany specjalnie dla tego motywu.

Osobiście uważam, że zawsze lepiej oddzielić styl (motyw) od funkcjonalności (wtyczki) i dlatego stworzenie nowej wtyczki do rejestracji CPT jest lepszym rozwiązaniem. Łatwiej jest dodać stylizację do nowego motywu, aby wynik CPT wyglądał dobrze, niż utracić dane CPT z powodu przełączenia się na nowy motyw.
Zarejestruj niestandardowy typ postu za pomocą kodu
Obiecałem fajną sztuczkę, prawda? Cóż, właściwie nie musisz pisać kodu, aby móc zarejestrować niestandardowy typ postu za pomocą kodu. Może to zabrzmieć dziwnie, ale to prawda. Możesz użyć tego narzędzia na stronie generatewp.com do wygenerowania kodu potrzebnego do rejestracji CPT. Wszystko, co musisz zrobić, to wprowadzić dane i wygenerować kod. Zrobiłem to dla naszego przypadku użycia referencji i oto, co wyszło:
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
… Doskonale poprawny kod PHP, którego możesz używać w swoich projektach. Jak wspomniano wcześniej, możesz umieścić ten kod w nowo utworzonej wtyczce lub w pliku functions.php motywu. Dla uproszczenia zdecydowałem się na to drugie. Umieściłem ten kod w pliku functions.php motywu, a pojawiło się menu Testimonials wp-admin i mogę teraz tworzyć nowe referencje (tak jak w powyższej metodzie wtyczki).
Możesz także ustawić inną ikonę dla niestandardowego typu postu, która będzie wyświetlana w menu wp-admin. Wystarczy dodać tę linię w tablicy $args: 'menu_icon' => 'dashicons-businessman'
. Listę wszystkich możliwych ikon znajdziesz tutaj: WordPress Dashicons. (Dzięki Aleksandrowi za tę wskazówkę).
Przyjrzyjmy się bliżej kodowi:
- Cały proces rejestracji CPT jest zawarty w funkcji
custom_post_type_testimonial()
, która jest podpięta do zaczepuinit
WP na końcu fragmentu kodu z następującym wierszem kodu:add_action( 'init', 'custom_post_type_testimonials' );
. To wywołanieadd_action
jest ostatnim wywołaniem, które wprawia wszystko w ruch i sprawia, że WordPress robi to magicznie. - Pierwszy blok kodu wewnątrz funkcji to tablica danych o nazwie
$labels
, która przechowuje ciągi tłumaczeń dla tego niestandardowego typu postu. - Drugi blok to tablica argumentów używanych do rejestracji CPT, tutaj możesz zdefiniować wszystkie ustawienia dla CPT. Które pola CPT powinien obsługiwać, czy powinny być publicznie widoczne, pozycja menu wp-admin, czy ma stronę archiwum i tak dalej. Aby zobaczyć pełny zestaw opcji, odwiedź tę stronę kodeksu WP.
- Ostatnia linia funkcji to
register_post_type( 'testimonials', $args );
. Spowoduje to zarejestrowanie niestandardowego typu posta „referencje” z ustawieniami określonymi w$args
powyżej.
Otóż to! Zarejestrowaliśmy niestandardowy typ posta z fragmentem kodu PHP.
Jedyne ulepszenie, które zmieniłbym w wygenerowanym kodzie, to użycie funkcji ucieczki do internacjonalizacji. Więc zamiast _x()
i __()
esc_html_x()
i esc_html__()
. Zawsze dobrze jest uciec od wartości wyjściowych – nawet ciągów tłumaczeniowych – ale to temat na inny wpis na blogu.
Następny artykuł z serii: Jak stworzyć niestandardową taksonomię.