Twórz niestandardowe typy postów WordPress ręcznie

Opublikowany: 2020-12-15

W naszym pierwszym artykule na temat typów niestandardowych postów WordPress omówiliśmy, jak łatwo tworzyć własne niestandardowe typy postów za pomocą doskonałej wtyczki Custom Post Type UI. W tym drugim artykule przyjrzymy się, jak możesz to zrobić ręcznie (np. przez kodowanie). Dlaczego więc, jeśli tworzenie niestandardowego typu posta za pomocą wtyczki jest tak łatwe, chcesz zrobić to na dłuższą metę?

Używanie wtyczki do dodawania niestandardowych funkcji może działać bardzo dobrze (a ogromna biblioteka wtyczek, które pomagają rozszerzyć funkcjonalność, jest jednym z powodów, dla których WordPress jest tak popularny). Ale mogą pojawić się problemy, jeśli i kiedy wtyczka stanie się nieobsługiwana (ponieważ autor wtyczki postanawia nie kontynuować jej aktualizowania i rozwijania). Jeśli tak się stanie, może się okazać, że funkcjonalność zapewniana przez wtyczkę już nie działa, co może stanowić poważny problem, jeśli Twoja witryna jest zbudowana wokół określonej funkcji dostarczanej przez wtyczkę.

W związku z tym, jeśli możesz kodować bezpośrednio w funkcjonalności, zamiast polegać na wtyczce, jest to dobra opcja do rozważenia.

Dzisiaj przeprowadzimy Cię przez proces tworzenia własnego niestandardowego typu postu bez użycia wtyczki. Zademonstrujemy również podstawową konfigurację, taką jak definiowanie etykiet CPT (Custom Post Type), a także włączanie polecanych obrazów i nie tylko. Następnie dodamy niestandardową taksonomię i wreszcie zobaczymy, jak możesz wyświetlić zawartość niestandardowego typu postu w interfejsie witryny.

Utwórz niestandardowy typ postu

Jeśli postępowałeś zgodnie z naszym poprzednim samouczkiem i nadal masz zainstalowaną wtyczkę CPT UI, wyłącz tę opcję, aby nie było zamieszania podczas ręcznego tworzenia nowego CPT.

Jak poprzednio, w naszym nowym niestandardowym typie postów będziemy używać przepisów. Aby rozpocząć, pierwszą rzeczą, którą musimy zrobić, jest utworzenie niestandardowego typu posta, wstawiając odpowiedni fragment kodu do naszego pliku functions.php .

Podstawowe ustawienia

Na razie utworzymy nasze typy postów z minimalną ilością argumentów, korzystając z funkcji register_post_type , którą zapewnia WordPress.

 register_post_type( string $post_type, array|string $args = array() )

Struktura tej funkcji wymaga dwóch parametrów. Klucz typu wpisu, który powinien zawierać tylko małe znaki alfanumeryczne, myślniki i podkreślenia oraz drugi opcjonalny parametr, $args dla dodatkowych argumentów. W tym artykule skupimy się tylko na niektórych z tych argumentów, ale jeśli chcesz poeksperymentować, możesz znaleźć pełną listę dostępnych argumentów w powiązanej dokumentacji WordPressa.

Na potrzeby tego artykułu użyjemy poniższego kodu.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

Jeśli podążasz dalej, odpal swój ulubiony edytor tekstu i dodaj ten kod do pliku functions.php .

Zobaczysz w tym kodzie, że użyliśmy tablicy „labels” do zdefiniowania nazw liczby pojedynczej i mnogiej dla naszego typu postu, argumentu show_in_rest do aktywacji edytora Gutenberga dla postów z przepisami, a także argumentu public .

public argument w rzeczywistości ma trzy różne rzeczy. Pokazuje niestandardowe menu postów administratora, zawiera niestandardowe menu postów w wynikach wyszukiwania w witrynie, a także pokazuje niestandardowe menu postów w obszarze menu administratora WordPress. Te opcje można oddzielnie modyfikować za pomocą odpowiednio argumentów show_in_nav_menus , exclude_from_search i show_ui . Wartości domyślne show_in_nav_menus i show_ui dziedziczą wartość public , ale wartość domyślna exclude_from_search jest przeciwieństwem wartości public .

Użyliśmy również argumentu supports , który określa, jakie funkcje będzie obsługiwać niestandardowy post. Na razie włączymy tylko „tytuł”, „edytor” i „miniaturka” (niektóre dalsze opcje zostaną pokazane w przyszłych artykułach).

Po dodaniu tego fragmentu kodu do naszego pliku functions.php i zapisaniu (zawsze wykonaj kopię zapasową swojej witryny przed podjęciem takiej pracy!), zobaczysz teraz zupełnie nowy element menu w panelu administracyjnym WordPressa (w tym przypadku „Przepisy”).

Następnie, jeśli przejdziemy do Wygląd > Menu, możemy potwierdzić, że przepisy zostały dodane jako opcja. To potwierdza, że ​​wszystko działa tak, jak powinno.

Uwaga: Jeśli przejdziesz do obszaru menu i nie zobaczysz pozycji menu „Receptury”, możliwe, że nie została ona zaznaczona w opcjach ekranu. Aby to zrobić, przejdź na samą górę strony i otwórz pasek opcji ekranu i upewnij się, że Twój nowy niestandardowy typ postu (w tym przykładzie Przepisy) został zaznaczony.

Dodaj swoją taksonomię dla niestandardowego typu postu

Taksonomie WordPressa istnieją w celu grupowania podobnych treści. W tym momencie mamy własne posty z „przepisami”, ale nie mamy możliwości kategoryzowania ich tak, jak chcemy. W związku z tym przydałoby się stworzyć osobną kategorię dla naszych przepisów. Pogrupujmy na przykład przepisy według rodzaju kuchni, do której należą.

Aby to osiągnąć, musimy zarejestrować nową taksonomię „kuchni”, a następnie połączyć ją z postem typu „przepisy”.

Aby dodać taksonomię, używamy funkcji register_taxonomy() udostępnianej przez WordPress (zobacz listę argumentów tutaj).

 register_taxonomy( string $taxonomy, $object_type, $args )

Obowiązkowe argumenty to $taxonomy , który jest kluczem taksonomii, oraz $object_type , który jest typem obiektu lub tablicą typów obiektów, z którymi taksonomia powinna być powiązana, w naszym przypadku „recipes”. W parametrze $arg uwzględnimy również wartości niezbędne do oznaczenia naszych instancji administracyjnych naszej taksonomii.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

Wartość logiczna show_admin_column określa, czy taksonomia będzie widoczna jako kolumna w tabeli listy administratorów przepisów.

Teraz, jeśli wrócisz do administratora WordPressa i odświeżysz to, powinieneś zobaczyć taksonomię „Kuchnie” w menu Przepisy.

Powinieneś również zobaczyć kolumnę „Kuchnie” w tabeli Przepisy:

Wyświetlanie treści niestandardowego typu posta na interfejsie użytkownika

W tym momencie powinieneś być w stanie umieścić swoje niestandardowe posty w swoim menu, a także niestandardowe taksonomie, które utworzyłeś. Aby to zademonstrować, do naszego menu taksonomii kuchni dodaliśmy dwie kuchnie: „śródziemnomorską” i „meksykańską”. Pojawiają się one następnie jako opcje menu w naszym menu WordPress, co pozwala nam utworzyć menu przepisów, takie jak pokazane poniżej.

Jeśli utworzyłeś post z przepisem i powiązałeś go z kategorią kuchni, powinieneś zobaczyć go teraz, gdy wybierzesz powiązaną kuchnię z menu.

Uwaga: jeśli spróbujesz wyświetlić post z przepisem w interfejsie, możesz otrzymać komunikat „404 nie znaleziono”. Może się to zdarzyć, ponieważ pamięć podręczna Permalink musi zostać opróżniona. Jest to łatwe do zrobienia. Po prostu przejdź do Ustawienia > Permalinki i ponownie zapisz.

Teraz utworzymy kolejną pozycję menu dla „Wszystkich przepisów”, używając niestandardowego kodu, aby wyświetlić archiwum wszystkich naszych przepisów.

Zanim jednak przejdziemy dalej, powinniśmy upewnić się, że nasz argument archiwum niestandardowych postów jest ustawiony na wartość true. Wróć do swojego kodu w functions.php , gdzie rejestrujesz typ przepisów i dodajesz 'has_archive' => true, w tablicy arguments.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

Następnie przejdź do Ustawienia> Permalinki i ponownie zapisz, aby upewnić się, że nie pojawi się błąd 404 (jak wspomnieliśmy wcześniej).

Teraz na stronie tworzenia menu dodaj niestandardowy link do strony archiwów. Tekst łącza może mieć postać „Wszystkie przepisy”.

Adres URL powinien mieć postać „/?post_type=recipes”, jeśli Twoje permalinki są ustawione na „Zwykły” i „/recipes/”, jeśli permalinki są ustawione na „Nazwa posta”.

Dodaj pozycję menu i przejdź do swojej witryny i kliknij jej link. Powinieneś teraz zobaczyć wszystkie posty z przepisami w widoku archiwum.

Dalsza lektura

  • Twórz niestandardowe typy postów WordPress za pomocą wtyczki
  • Niestandardowe typy postów WordPress – idź dalej
  • Twórz niestandardowe typy postów WordPress za pomocą własnej wtyczki!

Wniosek

Sposób podejścia do niestandardowych typów postów, który zbadaliśmy w tym artykule, może początkowo wydawać się mylący (szczególnie w porównaniu z łatwością tworzenia niestandardowych typów postów za pomocą wtyczki). Jeśli jednak chcesz wytrwać, kodowanie własnych niestandardowych typów postów ma swoje zalety, a mianowicie nie jesteś uzależniony od wtyczki, jeśli ta wtyczka kiedykolwiek przestanie działać lub stanie się nieobsługiwana.