Zrozumienie WordPress Custom Meta Box
W poprzednim poście rozmawialiśmy o niestandardowym polu WordPress, które pozwala na dodanie i wydrukowanie nowego wpisu w poście za pomocą pola Custom Field, które WordPress udostępnia na ekranie edycji posta. Jeśli jednak nie czujesz się komfortowo za pomocą niestandardowego pola (wszyscy mamy swoje indywidualne preferencje), oto alternatywa: możesz utworzyć meta-box.
Meta box to a niestandardowe pudełko które tworzymy sami, co może zawierać dane wejściowe lub inny interaktywny interfejs użytkownika, aby dodać nowe wpisy postów lub stron. Możesz użyć pola meta zamiast pola Custom Field, aby zrobić to samo. Zobaczmy, jak je utworzyć.
Więcej na stronie Hongkiat.com:
- Dostosuj katalog przesyłania mediów w WordPress
- Dostosuj style edytora WordPress
- Dostosuj “Cześć” W pasku administracyjnym WordPress
- Zarejestruj niestandardową taksonomię dla użytkowników WordPress
- Wyświetl ikony W menu WordPress
Tworzenie Meta-Boxa
WordPress udostępnia funkcję API, zwaną add_meta_box
, co pozwala nam natychmiast utworzyć meta box. To jest w swojej podstawowej formie.
funkcja add_post_reference () add_meta_box ('post-reference', 'Reference', 'referenceCallBack', 'post'); add_action ('add_meta_boxes', 'add_post_reference'); funkcja referenceCallBack () echo 'Hello World'
The add_meta_box
pobiera cztery parametry: identyfikator, tytuł meta-boxu, funkcję wywołania zwrotnego, która wywoła „Hello World” oraz typ postu, który chcemy wyświetlić. W tym przypadku przypisujemy nowe meta-box na stronie edycji posta (działa to również ze stronami).
W sekcji edycji postów znajdziesz nowe okno w następujący sposób.
Nowe okno meta, jak widać powyżej, pojawi się poniżej edytora WYSIWYG. Jeśli chcesz dodać go na pasku bocznym, możesz dodać „bok” po parametrze postu, a wraz z „wysokim”, jeśli chcesz umieścić go na samej górze paska bocznego.
funkcja add_post_reference () add_meta_box ('post-reference', 'Reference', 'referenceCallBack', 'post', 'side', 'high'); add_action ('add_meta_boxes', 'add_post_reference');
Znajdziesz go teraz nad Publikować pudełko…
Teraz, aby zastąpić tekst „Hello World”. Dodajmy elementy takie jak pole wejściowe dla nowego wpisu.
W tym przykładzie dodamy dwa pola wejściowe składające się z jednego do dodawania nazwy referencyjnej i drugiego do łącza referencyjnego:
funkcja referenceCallBack ($ post) wp_nonce_field ('reference_meta_box', 'reference_nonce'); $ nazwa_wartości = get_post_meta ($ post-> ID, '_post_reference_name', true); $ link_value = get_post_meta ($ post-> ID, '_post_reference_link', true); Echo ''; Echo ''; Echo '” „Dodaj nazwę odniesienia”.
'; Echo ''; Echo ''; Echo '” „Dodaj link odniesienia”.
';
Odśwież stronę edycji posta i powinieneś zobaczyć te dwa wejścia dodane.
The $ nazwa_wartości
i $ link_value
zmienna pobierze wpisy z bazy danych i zapełni je w polach wejściowych. Aby wprowadzić wpisy do bazy danych, musimy utworzyć do tego funkcję.
Musimy dodać kilka wierszy kodu, które zapełnią bezpiecznie wpisy dodane przez te dane wejściowe do bazy danych. “Bezpiecznie” tutaj oznacza legalny i autoryzowany wpis (nie ten pochodzący od hakerów lub innych nieautoryzowanych osób). Aby zapisać wpis, będziemy musieli utworzyć nową funkcję. Nazwijmy funkcję: save_post_reference
, tak.
funkcja save_post_reference ($ post_id) add_action ('save_post', 'save_post_reference');
Jak już wspomnieliśmy, musimy zweryfikować kilka rzeczy ze względów bezpieczeństwa:
(1) Będziemy musieli sprawdzić, czy użytkownik ma możliwość edycji posta.
if (! current_user_can ('edit_post', $ post_id)) return;
(2) Musimy także sprawdź, czy ustawiono wartość jednorazową.
if (! isset ($ _POST ['reference_nonce'])) return; if (! wp_verify_nonce ($ _POST ['reference_nonce'], 'reference_meta_box')) return;
(3) Następnie musimy zapobiec automatycznemu zapisywaniu danych. Zapisywanie można wykonać tylko raz “Zapisać” lub “Aktualizacja” przycisk został kliknięty.
if (zdefiniowane ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
(4) Musimy również zapewnić, że nasze dwa wejścia, post_reference_name
i post_reference_link
, są ustawione i gotowe przed przesłaniem wpisów.
if (! isset ($ _POST ['post_reference_name']) ||! isset ($ _POST ['post_reference_link'])) return;
(5) Wpis powinien być wolny od nieoczekiwanych znaków, które mogą zagrozić bezpieczeństwu witryny. Aby to sprawdzić, możesz użyć wbudowanej funkcji WordPress sanitize_text_field
.
$ reference_name = sanitize_text_field ($ _POST ['post_reference_name']); $ reference_link = sanitize_text_field ($ _POST ['post_reference_link']);
W porządku, teraz jesteśmy gotowi, aby zapisać wpisy w bazie danych:
update_post_meta ($ post_id, '_post_reference_name', $ reference_name); update_post_meta ($ post_id, '_post_reference_link', $ reference_link);
Teraz możesz wypróbować: wprowadź treść do pól wejściowych i kliknij “Aktualizacja” przycisk, aby je zapisać.
Wniosek
Właśnie stworzyliśmy meta-box, który składa się z dwóch wejść. Możesz dodatkowo rozszerzyć pudełko o inne rodzaje danych wejściowych, takie jak przycisk opcji lub pole wyboru. Ten przykład może być bardzo prosty, ale gdy go zrozumiesz, będziesz mógł użyć tego meta-boxu do znacznie bardziej skomplikowanych zastosowań. Daj nam znać, jeśli będziesz używać tego i do czego będziesz go używać.