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.

Dlaczego warto korzystać z niestandardowych typów wpisó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.

Tworzenie naszego rodzaju postu filmowego

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' );

Etykiety

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',);

Argumenty

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:

  • 'tytuł'
  • 'redaktor'
  • 'autor'
  • 'Miniaturka'
  • 'fragment'
  • "trackbacks"
  • 'Pola niestandardowe'
  • "komentarze"
  • "korekty"
  • "atrybuty strony"
  • "post-formats"

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:

  • 5 - Poniższe posty
  • 10 - Poniżej mediów
  • 15 - Poniżej linków
  • 20 - Poniżej stron
  • 25 - Poniżej komentarze
  • 60 - Poniżej pierwszego separatora
  • 65 - Poniżej wtyczek
  • 70 - Poniżej użytkownicy
  • 75 - Poniżej narzędzi
  • 80 - Poniżej ustawień
  • 100 - Poniżej drugiego separatora

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 .

Ostatnie słowa

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.