Tematem dzisiejszego wpisu będzie zbudowanie prostej, ale w pełni funkcjonalnej strony administracyjnej dla utworzonego w poprzednim wpisie pluginu.
Do menu głównego kokpitu WordPress dodamy nową opcję i dedykowaną naszemu pluginowi stronę administracyjną, na której będziemy dodawać kolejne ustawienia dotyczące slidera. A trochę tego będzie: dodawanie nowych zakładek, ich edycja, usuwanie, dodatkowe ustawienia dotyczące pozycji w oknie przeglądarki i kilka innych rzeczy.
3 kroki do stworzenia strony administracyjnej
Aby dodać wspomnianą wcześniej stronę opcji do menu administracyjnego WP należy spełnić 3 warunki:
- Należy utworzyć funkcję, która zawiera „kod budujący menu”.
- Zarejestrować tę funkcję (coś podobnego do rejestrowania sidebarów w motywach) korzystając z
admin_menu action hook
. - Utworzyć strukturę dokumentu HTML z polami formularza, w której umieścimy opcje wtyczki.
Krok 1 – Kod dodający opcje do menu w panelu administracyjnym WordPress
Nic prostszego. W praktyce wygląda to tak:
<?php /** Krok 2. */ add_action( 'admin_menu', 'my_plugin_menu' ); /** Krok 1. */ function my_plugin_menu() { add_options_page( 'My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options' ); } /** Krok 3. */ function my_plugin_options() { if ( !current_user_can( 'manage_options' ) ) { wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); } echo '<div>'; echo '<p>Here is where the form would go if I actually had options.</p>'; echo '</div>'; } ?>
Powyższy przykład pochodzi ze strony kodeksu WordPress.
Cały powyższy kod wystarczy skopiować i zapisać w głównym pliku PHP pluginu. Jeżeli kontynuujesz od poprzedniego wpisu, to kod możesz wkleić na końcu pliku multitab-slider.php
.
Aby sprawdzić, czy kod naprawdę działa, wystarczy przejść do kokpitu i najechać kursorem na ostatnią pozycję pionowego menu – „Ustawienia”. Ostatnią opcją w tym submenu powinna być ta, właśnie przez nas dodana – ‘My Plugin’.
Tak to powinno wyglądać teraz:
Zamiast SUBMENU – TOP LEVEL
Tak naprawdę nie do końca o to mi chodziło – czasem jest tak, że instalujemy jakiś plugin i nawet nie wiemy, że ma swoją stronę administracyjną, bo opcja jest ukryta w którymś sub-menu. Ja chcę, aby strona administracyjna mojego pluginu była wyświetlana jak jedna z głównych opcji.
Nie jest to najtrudniejsze zadanie, wystarczy podmienić funkcję dodającą pozycję do menu jako sub-opcję na funkcję która doda naszą pozycję jako opcję „top level”.
Zamieniamy add_options_page ()
na add_menu_page ()
.
Nie jest chyba zaskoczeniem, że warto wejść pod link do dokumentacji funkcji, której mamy zamiar teraz użyć, aby zobaczyć jakie parametry będą do niej potrzebne. 🙂
Tak wyglądają nazwy parametrów:
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
A tak gotowa funkcja z moimi parametrami:
function my_plugin_menu() { add_menu_page( 'Multitab Slider', 'Multitab Slider', 'manage_options', 'multitab-slider', 'my_plugin_options', plugins_url( 'multitab-slider/image/icon.png' ), 100 ); }
Tutaj, to na razie wszystko – nie potrzebuję dokładać, do mojego menu żadnych dodatkowych opcji, więc ten krok tak zostawię.
Krok 2 – Rejestrowanie funkcji dodającej panel administracyjny pluginu do kokpitu WordPress
Aby dodać do opcji w Panelu Administracyjnym nową pozycję, a właściwie nasze przed chwilą stworzone menu do pluginu, wystarczy wykorzystać funkcję add_action()[wpa_code]. Jako pierwszy parametr podajemy nazwę „zaczepu” – [wpa_code]admin_menu
(dodajemy opcję do menu administracyjnego, więc bez kombinowania), a jako drugi parametr nazwę funkcji, która „dołoży” nowe opcje w odpowiednie miejsce w odpowiedni sposób. Tutaj to również na razie wszystko.
Ten krok to właściwie tylko kopiuj-wklej. Zarejestrowanie naszego menu wygląda, tak:
add_action( 'admin_menu', 'my_plugin_menu' );
Krok 3 – Strona opcji pluginu
W tym miejscu będzie trochę więcej zabawy... W tym kroku stworzymy pola, formularze, opisy i wszystko inne co ułatwi użytkownikom końcowym personalizację slidera.
Zanim przystąpimy do pracy, z tego miejsca możemy wybrać jedną z dwóch dróg, od której zależy gdzie będziemy trzymać strukturę strony administracyjnej.
- W funkcji w tym samym pliku – głównym pliku PHP pluginu.
W tym przypadku należy zmodyfikować parametrfunction
dlaadd_menu_page()
, w którym podajemy nazwę funkcji znajdującej się w tym samym pliku, w której zapisana jest struktura dokumentu. - W oddzielnym pliku PHP.
Modyfikujemy parametrfunction
funkcjiadd_menu_page()
, podając ścieżkę do pliku PHP ze strukturą HTML strony administracyjnej.
Dla uproszczenia, w tym momencie pójdziemy pierwszą drogą i wszystko będę zapisywał w pliku głównym.
I to na dzisiaj wszystko, dodaliśmy nową pozycję do menu i mamy funkcję, która będzie wyświetlać stronę administracyjną. W kolejnej części będziemy tworzyć tabelę podobną do tej użytej we wpisach, która będzie pozwalała na dodawanie i edytowanie zakładek. Zdradzę, że wykorzystamy do tego celu klasę WP_List_Table
.
Już teraz troszkę się tym bawiłem i zrobiłem prototyp mojej strony administracyjnej: