Pola Meta to przydatna funkcja w WordPress, która pozwala dodać całkowicie niestandardowe dane do postu lub strony w WordPress.
Załóżmy na przykład, że tworzysz stronę internetową dla klienta, który musi wyświetlać informacje o wartościach odżywczych wraz z produktami w sklepie (co omówimy w tym poście). Możesz dodać dowolną liczbę niestandardowych pól meta do ekranów edycji postów i stron w zapleczu WordPress, zarówno dla postów, jak i niestandardowych typów postów.
Zazwyczaj niestandardowe pola meta zawierają dane i pola formularza, które umożliwiają administratorom dodawanie/edytowanie/usuwanie danych meta postów (tj. niestandardowych pól, przezwyciężając ograniczenia brzydkiego i słabego wbudowanego pola niestandardowego.
W tym samouczku pokażę Ci, jak dodać własne niestandardowe pola meta do ekranu edycji postów. Zbadamy, jak dodawać i zarządzać polami tekstowymi, przyciskami radiowymi i polami wyboru, które zapewnią użytkownikom bardziej zaawansowaną kontrolę nad metadanymi postów.
- Co to jest Meta Box?
- Dodawanie pola Meta
- Drukowanie pól formularza
- Przechowywanie Danych
- Wrapping Up
Uwaga: przewiń w dół strony, aby pobrać bezpłatną wtyczkę z przykładu w tym samouczku.
Co to jest Meta Box?
Pole meta to przeciągalne pole wyświetlane na ekranie edycji postów w zapleczu WordPress. Użytkownicy mogą wybrać lub wprowadzić dodatkowe informacje w polach meta dodawanie do treści w obszarze edycji postu głównego.
Istnieją dwa rodzaje danych, które można wprowadzić w polach meta: metadane (tj. pola niestandardowe) i terminy taksonomiczne.
Dodawanie pola Meta
WordPress zapewnia add_meta_box
funkcja o określonym celu, aby dodać nowe niestandardowe pole Meta. add_meta_box
musi być wywołany z wewnątrz funkcji zwrotnej, która powinna być wykonana, gdy pola meta bieżącej strony są załadowane. Zadanie to można wykonać podłączając wywołanie zwrotne do add_meta_box_{custom-post-type}
akcja hook, jak sugeruje Kodeks.
Mając to na uwadze, dodajmy następujący kod do głównego pliku wtyczki lub motywu funkcja.php pliku (pamiętając, że zawsze najlepiej jest utworzyć motyw potomny zamiast zmieniać funkcje.php plik):
To nasze pierwsze niestandardowe pole meta. W powyższym kodzie przekazujemy sześć argumentów do add_meta_box
funkcja: identyfikator pola meta, tytuł, funkcja zwrotna, slug niestandardowego typu post (żywność
), kontekst (bok
) i priorytet (niskie
).
Funkcja callback wydrukuje znaczniki HTML w polu meta i zdefiniujemy je w następujący sposób:
Nie został jeszcze wydrukowany HTML, ale pole meta jest na swoim miejscu. Przejdźmy więc przez ten przykład bardziej szczegółowo.
Po pierwsze, powinniśmy rozważyć zapewnienie bezpieczeństwa. Musimy wywołać funkcję wp_nonce_field
, który tworzy pole nonce, celem jest zapewnienie, że żądanie formularza pochodzi z bieżącej strony internetowej. Dodajmy więc następujący wiersz kodu do funkcji zwrotnej:
Tutaj przekazaliśmy funkcję tylko dwa z czterech przyjętych argumentów. Pierwszy z nich to nazwa akcji, tutaj ustawiona na basename bieżącego pliku, podczas gdy drugi argument to atrybut name ukrytego pola. Nawet jeśli pole nonce nie gwarantuje absolutnej ochrony, dobrą praktyką jest zawsze umieszczanie go w dowolnym niestandardowym polu meta (sprawdź Kodeks WordPress, aby uzyskać dokładniejsze wyjaśnienie).
Gdy skończymy z zabezpieczeniami, musimy pobrać z bazy danych niestandardowe wartości pól, które mają być zarządzane za pomocą pól meta box. To jest, gdzie get_post_meta
funkcja jest przydatna.
W naszym przykładzie wtyczki (lub pliku funkcji, w zależności od tego, jak chcesz zaimplementować przykład w tym samouczku) używamy trzech pojedynczych pól niestandardowych, dwóch ciągów i tablicy. Poniższy kod pokazuje, jak pobrać ich wartości z bazy danych:
W tym przykładzie niestandardowe ślimaki pól są poprzedzone przez podkreślniki, co oznacza, że mamy do czynienia z ukrytymi niestandardowymi polami. W ten sposób nie będą one wyświetlane administratorowi w polu meta wbudowanych pól niestandardowych, ale będą edytowalne tylko z pola Meta niestandardowego.
Wreszcie nadszedł czas, aby wydrukować znaczniki.
Drukowanie pól formularza
Teraz musimy wyprodukować dane wyjściowe. Zacznijmy od dodania prostego pola tekstowego, które pozwoli administratorowi na przechowywanie wartości pojedynczego pola niestandardowego, w tym przypadku:
W powyższym kodzie samo pole niestandardowe podaje wartość bieżącego elementu wejściowego. Następne pole niestandardowe będzie obsługiwane za pomocą pary przycisków radiowych:
Tutaj sprawy stają się trochę skomplikowane. Na sprawdzone
funkcja porównuje dwa ciągi, które przekazaliśmy jako argumenty. Jeśli ciągi mają tę samą wartość, funkcja ustawia bieżące pole na sprawdzone
.
Na koniec dodamy grupę pól wyboru do pola meta:
Wartość nazwa
atrybut odpowiada elementowi tablicy, a później pozwoli nam to na bardziej wydajne przechowywanie danych.
Teraz rozważmy pierwszy argument sprawdzone
funkcja:
Jest to operator trójdzielny, który sprawdza, czy aktualny value pola wyboru jest taka sama jak wartość $current_vitamins
. Jeżeli warunek jest zweryfikowany, wtedy zwraca taką samą wartość, w przeciwnym razie zwraca pusty łańcuch.
Teraz, gdy logika powinna być jasna, możemy skrócić kod za pomocą tablicy i foreach
cykl:
A teraz możemy to wszystko poskładać do kupy:
A oto jak wygląda gotowe pole meta na ekranie edycji postu ze wszystkimi polami formularza:
Przechowywanie Danych
Pole meta jest gotowe, ale nie można jeszcze zapisać danych. Aby wykonać to zadanie, musimy zdefiniować nową funkcję zwrotną, która będzie wywoływana podczas zapisywania posta:
Na save_post_{$post_type}
hook działa, gdy nowy $post_type
jest zapisywany lub aktualizowany.
Teraz zobaczmy, co dzieje się wewnątrz funkcji. Najpierw musimy sprawdzić wartość pola nonce:
Jeśli pole nonce nie jest ustawione lub jego wartość nie jest poprawna lub wygasła, wykonanie zostanie przerwane (sprawdź kod WordPress, aby uzyskać więcej informacji na temat wp_verify_nonce
).
Jeśli wolisz pominąć funkcję w przypadku automatycznego zapisywania, możemy dodać następujący warunek:
Następnie musimy sprawdzić możliwości użytkownika:
Wreszcie możemy przechowywać dane:
Jeżeli co najmniej jeden element "witaminy"
tablica istnieje, wtedy $ witaminy
zmienna będzie przechowywać odpowiednie wartości.Później PHP
Później PHP array_map
funkcja stosuje WordPress sanitize_text_field
funkcja do każdego elementu tablicy. Wreszcie, the update_post_meta
funkcja przechowuje opublikowane wartości.Jeśli nie zaznaczono pola wyboru, tablica
Jeśli nie zaznaczono pola wyboru, tablica $_POST ['witaminy']
nie istnieje, a dane możemy usunąć wywołując delete_post_meta
(więcej szczegółów w dokumentacji Kodeksu).
A oto Pełny kod:
php ” > Ładowanie gist 2849f9040b86888811c3b8555f80ad64
Zebrałem kod w wtyczce, którą możesz pobrać z Github i przetestować na własnej stronie internetowej lub zainstaluj localhost.
Wrapping Up
Teraz, gdy widziałeś, jak działają niestandardowe pola meta, możesz dodać dowolny rodzaj pola formularza do ekranu edycji postów w zapleczu witryny WordPress. HTML5 wprowadził dużą liczbę typów wprowadzania, którymi możemy się bawić, od pól daty po selektor kolorów.
Możesz mieć jeszcze więcej zabawy z narzędziami jQuery UI lub mashing danych z kilku usług internetowych, takich jak Google Maps API, i przechowywanie ich jako niestandardowych pól. Przykład w tym samouczku tylko zarysowuje powierzchnię, w jaki sposób można dostosować edytowanie postów.