Jak zaimplementować niestandardowe typy postów i niestandardowe pola w WordPress

Opublikowany: 2014-06-10

WordPress nie ogranicza się już tylko do blogowania — to w pełni funkcjonalny system zarządzania treścią, który może wyświetlać i formatować dowolne treści, które mu podasz. Porozmawiajmy więc o dwóch świetnych sposobach rozszerzenia WordPressa: niestandardowych typach postów i niestandardowych polach.

Niestandardowe typy postów

Wygląda na to, że nasza strona testowa, Monday Morning Mug (której użyliśmy w naszym poście na blogu dotyczącym integracji poczty e-mail), ma nowy problem do rozwiązania. Nasz blog rozrósł się do tego stopnia, że ​​zatrudniliśmy pełnoetatową ekipę recenzującą kawę. Byli zajęci parzeniem kawy i pisaniem recenzji. Publikowali te recenzje na blogu, ale nasi czytelnicy powiedzieli nam, że wszystkie te recenzje przeszkadzają w naszej „prawdziwej” zawartości bloga. Musimy zrobić osobne miejsce na nasze recenzje kawy, ale zwykłe strony WordPress po prostu go nie zmniejszą. Recenzenci sugerowali również, że chcieliby mieć na stronie miejsce do łatwego przechowywania informacji, takich jak kraj pochodzenia kawy i notatki z degustacji. Brzmi to jak idealne zastosowanie dla niestandardowego typu postu, funkcji WordPress, która pozwala nam tworzyć nowe sekcje treści w naszej witrynie.

Niestandardowe typy postów są niezwykle elastyczne i można je zaimplementować dla dowolnego rodzaju treści: cytaty, filmy i różne odcienie farby to przykłady tego, czym może być niestandardowy typ posta.

Będziemy chcieli dodać nową sekcję naszej strony w podkatalogu /coffees/ , która jest pełna recenzji kawy. Będzie to wymagało trochę manipulacji kodem, ale powinno to być stosunkowo łatwe.

Uwaga: aby to zrobić, musisz mieć możliwość edytowania plików .php w katalogu instalacyjnym WordPressa, co zwykle wymaga dostępu do FTP/SFTP/SSH. Upewnij się, że masz to przed kontynuowaniem.

Każdy motyw WordPress może wykorzystywać plik functions.php, który znajduje się pod adresem:
/wp-content/themes/your_current_theme/functions.php
Ten plik jest zwykle używany do zmian witryn związanych z określonym motywem, a także mniejszych niestandardowych modyfikacji witryn, takich jak ta, którą zamierzamy zrobić.

Uwaga: będziemy dodawać kod do pliku functions.php , co oznacza, że ​​jest on specyficzny dla motywu. Jeśli dodasz to do pliku functions.php, a następnie zmienisz motyw w instalacji WordPress, usuniesz niestandardowy typ postu ze swojej witryny. Możesz zachować niestandardowe typy treści, korzystając z wtyczki, takiej jak interfejs użytkownika typu Custom Post Type.

1. Otwórz plik functions.php i dodaj następujący kod na dole pliku:

function create_new_post_type() {
$labels = array(
'name' 			 => __('Coffee Reviews'),
'singular_name'  => __('Coffee Review'),
);
$args = array(
'labels'      	 => $labels,
'public' 	  	 => true,
'has_archive' 	 => true,
'menu_position'  => 5,
'description'    => 'Reviews And Types of Coffee',
'rewrite'     	 =>
array('slug' => 'reviews'),
'supports'    	 =>
array( 'title',
'comments', 'editor',
'thumbnail', 'custom-fields', 'revisions'),
);

register_post_type('Reviews', $args);
}
add_action('init', 'create_new_post_type');

Ponieważ nie lubimy używać kodu bez pojęcia, co on robi, przyjrzyjmy się, co robi ten kod.

Uwaga: Być może zauważyłeś, że $labels i $args są zdefiniowane poza funkcją register_post_type() , mimo że są one później przekazywane jako argumenty do tej funkcji. Ta metoda ułatwia organizację i czytelność, ale można skondensować obie tablice w jednym argumencie. To byłoby po prostu trudniejsze do zrozumienia.

Tablica $args zawiera wszystkie szczegóły potrzebne do zdefiniowania naszego nowego typu zawartości. Oto, co robią:

  • 'labels' — tablica określająca, co nazwiemy naszym typem zawartości. Dostępnych jest znacznie więcej etykiet, których możesz użyć, a pełna lista jest dostępna w dokumentacji tutaj.
  • 'public' — wartość logiczna określająca, czy post jest widoczny poza panelem administracyjnym.
  • 'has_archive' — jeśli to prawda, ta wartość logiczna utworzy archiwum tego typu niestandardowych postów, podobnie jak standardowe posty WordPress.
  • 'menu_position' — ta liczba całkowita zmienia miejsce, w którym znajduje się niestandardowy przycisk nawigacji po wpisie. Cyfra 5 oznacza, że ​​trafi bezpośrednio pod zakładką postów. Pełną listę kodów numerycznych znajdziesz w tej samej dokumentacji.
  • 'description' – opisuje typ posta.
  • 'rewrite' – zmienia slug na „recenzje”, co pomoże stworzyć użyteczną strukturę permalinków. (Może być również wartością logiczną; więcej informacji znajdziesz w dokumentacji.)
  • 'supports' — tablica określająca, jakie natywne funkcje edycji/publikowania w WordPressie są włączone. Ten jest dość elastyczny i jest dużo więcej opcji, ale będziemy potrzebować przynajmniej custom-fields i editor dla tego posta.

Następnie wywoływana jest funkcja register_post_type() , która tworzy nowy typ posta o nazwie Reviews używając tablicy argumentów, które właśnie zdefiniowaliśmy.

Na koniec musimy wywołać ostatnią funkcję, aby zakończyć proces. register_post_type() powinna być zawsze inicjowana przez akcję 'init'. Możemy podłączyć naszą nową funkcję do init, wywołując

add_action(‘init’, ‘create_new_post_type’);

Wspaniały! Teraz, jeśli zalogujemy się do naszego panelu administracyjnego WordPressa, po lewej stronie powinna pojawić się nowa zakładka „Recenzje”.

kawa_recenzje

2. Teraz, gdy mamy skonfigurowane Recenzje jako niestandardowy typ postu, musimy zaktualizować strukturę permalinków, aby nasi czytelnicy mogli łatwo znaleźć nasze posty. Dodatkowo sprawia, że ​​nasze adresy URL są znacznie łatwiejsze do odczytania i przyjazne dla SEO.

3. W menu Ustawienia -> Permalinki znajdziesz kilka typowych opcji struktur permalinków. Zamierzamy zmienić niestandardowe ustawienie, aby pasowało do pola /%category%/%postname%/

Oznacza to, że WordPress wygeneruje adresy URL pasujące do kategorii i tytułu naszych postów.

Uwaga: jest to zmiana obejmująca całą witrynę i wpłynie na Twoje posty w innych kategoriach.

custom_permalink

Przyjrzyjmy się teraz adresowi URL posta, który nasi recenzenci napisali o kawie Sumatra Ketiara:

sumatra_permalink

Fantastyczny! Sprawdź ten adres URL. Mamy recenzje podzielone na osobne katalogi, a adres URL jest napisany w prostym języku angielskim. Teraz nasi czytelnicy dokładnie wiedzą, co otrzymają, gdy klikną łącze.

Pola niestandardowe

Chociaż nasi recenzenci uwielbiają nową sekcję Recenzja, poprosili nas o umieszczenie na zapleczu czegoś, co pozwoli im wprowadzić wspólne informacje, które piszą o każdej kawie, takie jak kraj pochodzenia i notatki dotyczące degustacji. Brzmi to jak idealne wykorzystanie pól niestandardowych, które na szczęście są bardzo łatwe do zaimplementowania.

1. W edytorze indywidualnej recenzji zobaczysz przycisk opcji ekranu w prawym górnym rogu edytora:

opcje_ekranu

który rozwija się do tego po kliknięciu:

screen_options_dropdown

2. Zaznacz pole Pola niestandardowe.

Pod edytorem zobaczysz pole Pola niestandardowe, które właśnie włączyliśmy.

custom_fields_blank

3. Możesz wpisać cokolwiek w obu polach; wszystko, co wpiszesz i dodasz w polu Nazwa, zostanie zapisane do późniejszego wykorzystania. Tutaj podajemy obszar i kraj, z którego pochodzi nasza kawa.

custom_fields_region

Pola niestandardowe sprawiają, że standaryzacja danych ważnych dla kategorii w każdym poście w osobnym miejscu jest niezwykle łatwa. Teraz musimy tylko uzyskać te informacje, aby wyświetlić je w naszej recenzji.

4. Dodamy ten tag kodu do jednego z naszych dokumentów tematycznych:

<br /><?php the_meta(); ?><br />

Uwaga: w tym przykładzie umieścimy ten tag w naszym pliku content.php, ale będziesz musiał znaleźć odpowiednią lokalizację dla swojej tabeli wartości. Powinieneś również stylizować ten tag, aby pasował do reszty motywu, o którym możesz przeczytać więcej tutaj.

Wracając do naszego bloga, widzimy, że nasz tag wstawił listę do naszej recenzji.

przykład_pola_niestandardowego

Elegancki! Teraz nasi czytelnicy i recenzenci są zadowoleni. Udało nam się stworzyć niestandardowy typ posta, który pozwolił nam zapisywać recenzje o kawie, a także mogliśmy dać naszym recenzentom miejsce do przechowywania wszystkich ważnych informacji dla każdej innej recenzji.