Niestandardowe typy postów to jeden z kluczowych elementów, które powinieneś zrozumieć, jeśli chcesz tworzyć elastyczne, profesjonalne witryny WordPress.
Jakie niestandardowe typy postów pozwalają na dodawanie własnych typów danych; może to być artykuł, piosenka, film lub tysiące innych rzeczy. Niestandardowe typy postów umożliwiają kategoryzowanie danych według indywidualnych potrzeb, co z kolei pozwala ci lepiej kontrolować zachowanie witryny.
W tym artykule omówię tworzenie niestandardowego typu wpisu filmowego dla bazy danych filmów.
Aby stworzyć stronę internetową filmu, musimy założyć bazę danych. Aby to zrobić bez niestandardowych typów postów, byłoby to bardzo trudne i potencjalnie kolidowałyby z naszą obecną instalacją WordPress. Jednak nasz niestandardowy typ wpisu będzie miał własne menu administratora i niestandardową stronę edycji, jeśli chcemy, możemy nawet dodać niestandardowe taksonomie do strony z nazwami i właściwościami, które pasują do projektu.
Niestandardowe typy postów przenoszą platformę WordPress z platformy blogowej do pełnego systemu CMS. Dają nam swobodę konfigurowania naszej witryny filmowej bez żadnych nieprzyjemnych hacków.
W tym artykule przedstawię cały kod, który jest niezbędny do stworzenia niestandardowego typu postu, a następnie przejdziemy przez niego wiersz po wierszu, abyś mógł dowiedzieć się, co robi każda część i dostosować ją do swoich potrzeb.
Oto pełny kod dodawany do pliku functions.php :
add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}
Jak widać, dość duża część kodu przechodzi w tworzenie niestandardowego typu postu, ale jeśli go zrozumiesz, będziesz w stanie uzyskać ten kod i dostosować go do swoich projektów. W pierwszym wierszu przypisujemy funkcję z naszym niestandardowym typem postu do init, a to oznacza, że nasza funkcja zostanie uruchomiona, gdy WordPress zrobi to, abyśmy zawsze mieli ją w naszym panelu:
add_action( 'init', 'register_movie' );
W następnym wierszu zaczynamy od podania nazwy naszej funkcji i zmiennej wraz ze wszystkimi etykietami, które będą powiązane z typem posta filmowego, aby wszystko można było dostosować.
Pierwszą rzeczą, którą deklarujemy na etykietach, jest nazwa naszego niestandardowego typu postu, w liczbie mnogiej i liczbie pojedynczej:
'name' => 'Movies','singular_name' => 'Movie',
W kolejnych dwóch liniach musimy podać nasz tekst Dodaj nowy (jeśli chcemy go zmienić), a następnie ustawić Dodaj nowy film , aby podczas dodawania nowego filmu mieliśmy niestandardowe doświadczenie zamiast dodawać film i mieć nagłówek z napisem "Dodaj nowy post".
'add_new' => 'Add New','add_new_item' => 'Add New Movie',
Po etykietach do utworzenia nowego filmu, musimy ustawić etykiety do edycji, nowy tekst pozycji (domyślnie jest to Nowy post / Nowa strona) i musimy również ustawić tekst postu:
'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',
Teraz w etykietach przechodzimy do możliwości wyszukiwania w wordpress admin i naszych etykietach do tego. Musimy ustawić etykiety dla wyszukiwania filmów, gdy nie znaleziono wyników, a także wtedy, gdy w koszu nie ma wyników:
'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',
Ostatnia etykieta mówi sama za siebie, tutaj musimy umieścić nazwę, którą chcemy, aby niestandardowy typ postu miał w interfejsie menu, w tym przypadku po prostu trzymamy się "Filmów":
'menu_name' => 'Movies',);
Teraz musimy przejść do naszych argumentów, ponieważ utworzyłem kolejną zmienną, która będzie utrzymywać wszystkie argumenty, nazwałem ją argumentami.
Pierwszym argumentem, o który prosi, są etykiety i wszystko, co musimy zrobić, to wskazać zmienną etykiet, którą właśnie zbadaliśmy, jak na przykład:
$args = array('labels' => $labels,
W następnym wierszu musimy ustalić, czy nasz typ postu będzie hierarchiczny jak strony czy nie (jak posty). W moim przypadku nie chcę, aby filmy były hierarchiczne, więc ustawiłem je na false. Następny wiersz to tylko opcjonalny opis typu wpisu.
'hierarchical' => false,'description' => 'Here you will add all the movies for the database',
Kolejna linia jest ważna; tutaj musimy określić, jaki będzie obsługiwany nasz niestandardowy typ postu, jakie będą jego pola. Opcje dla tego pola to:
W moim przypadku i dla mojego typu postu chcę tylko, aby wspierał tytuł, edytor WYSIWYG , miniaturę i komentarze, a do tego potrzebuję dodać tablicę w tym wierszu, jak na przykład:
'supports' => array( 'title', 'editor', 'thumbnail','comments' ),
W następnym wierszu musimy określić jakie taksonomie będzie ono używane, a ponieważ będziemy tworzyć niestandardowe taksonomie, to te, które zostaną dodane w tym wierszu:
'taxonomies' => array( 'genre', 'actors', 'year' ),
Następne trzy linijki mają związek z widocznością typu postu w obszarze administracyjnym i wszystko, co robię, jest ustawione na true:
'public' => true,'show_ui' => true,'show_in_menu' => true,
Następnie przechodzimy do pozycji menu, w której powinien się pojawić typ wiadomości. Tutaj mamy również wiele opcji do wyboru:
W moim przypadku chciałem, aby filmy pojawiały się natychmiast po poście, więc ustawiłem pozycję menu na 5, tak jak poniżej:
'menu_position' => 5,
W następnym wierszu zajmiemy się ikoną, możemy ustawić własną ikonę lub pozostawić ją pustą, a zamiast tego otrzymamy ikonę postów, a następnie kolejka zajmie się tym, co chcemy, aby ten typ ogłoszenia pojawiał się w naszym menu .
'menu_icon' => //the image link here,'show_in_nav_menus' => true,
W kolejnych 3 wierszach dodajemy możliwości typu postu; najpierw ustalamy, czy chcemy, aby ten typ postu był sprawdzany na interfejsie, a następnie decydujemy, czy chcemy wyłączyć wyniki wyszukiwania postów z wyszukiwania, a ostatecznie decydujemy, czy chcemy, aby archiwum dla typu postu w filmach:
'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,
W następnym wierszu ustawiamy zmienną zapytania dla naszego typu postu, co określi, jak będzie wyglądał adres URL, dla tej opcji mamy trzy możliwe parametry: możemy ustawić ją na true, a następnie możemy dotrzeć do filmu za pomocą filmu /? = name_of_movie; możemy ustawić go na ciąg znaków, aby film w adresie URL został zastąpiony przez wszystko, co chcemy, na przykład "pokaż" i musielibyśmy użyć /? show = name_of_movie , aby osiągnąć ten sam film; ostatnią opcją jest ustawienie go na false i w ten sposób uniemożliwisz osiągnięcie filmu za pomocą query_var. W moim przypadku, mając na uwadze tę ostatnią opcję, ustawiłem moje zapytanie var na true, abyśmy mogli osiągnąć go za pomocą query_var filmu:
'query_var' => true,
W następnym wierszu decydujemy, czy chcemy, aby filmy można było wyeksportować, a następnie wybieramy ślimak dla tego typu postu, w moim przypadku po prostu utknąłem z tym, by mieć "film" jako ślimak, ale można wybrać dowolny ciąg, który będzie i masz naprawdę wiele opcji, ten parametr jest obszerny.
'can_export' => true,'rewrite' => true,
Ostatnim argumentem naszej argumentacji jest to, gdzie ustawiamy typ możliwości naszego postu, a ponieważ chcę, aby były takie same jak zwykłe posty, właśnie nadałem mu wartość postu, tak jak to:
'capability_type' => 'post');
Nasze etykiety i argumenty są gotowe, wystarczy teraz zarejestrować typ naszego posta, a funkcja register_post_type ma dwa parametry, pierwszy to nazwa naszego niestandardowego typu postu (ma on maksymalnie 20 liter i bez wielkich liter) lub spacje), a drugi to argumenty dla typu postu, w tym przypadku po prostu umieścimy zmienną args:
register_post_type( 'movie', $args );}
Nasz typ postu jest tworzony i całkowicie funkcjonalny, a wszystko, czego potrzebujesz, aby wyświetlało się na twoich stronach, to jakaś magia wp_query .
Mam nadzieję, że widzisz, dlaczego tak wiele osób używa niestandardowych typów postów w WordPressie.
Ten artykuł miał na celu zapoznanie się z procesem tworzenia niestandardowego typu posta i stanowił punkt wyjścia do tworzenia własnych niestandardowych typów postów.
Wyróżniony obraz / miniatura, dostosowany obraz przez ATOMIC Hot Links, przez Flickr.