Jak stworzyć własną wtyczkę?

Jak stworzyć własną wtyczkę?
WordPress jest popularny z wielu powodów, ale zdecydowanie najistotniejszym z nich jest łatwe rozszerzanie jego możliwości za pomocą wtyczek. W oficjalnym repozytorium znajdziemy całą masę gotowych dodatków, a jeśli potrzebujemy czegoś bardziej zaawansowanego, to do dyspozycji jest szeroki wybór płatnych wtyczek premium. Mechanizm rozszerzeń możemy również wykorzystać do własnych celów – stworzenie prostej wtyczki nie jest niczym skomplikowanym, a może nam znacząco ułatwić pracę z WordPressem.

Czym jest wtyczka?

Wtyczka do WordPressa to tak naprawdę zwykły skrypt napisany (tak jak sam WordPress) w języku PHP, mający dostęp do funkcji WordPressa oraz oferowanych przez niego akcji i filtrów, dzięki którym można łatwo rozszerzać jego możliwości bez modyfikowania jego kodu. Nie wdając się w techniczne szczegóły wspomnę tylko, że jeśli chcemy zmodyfikować jakąś funkcję WordPressa lub zmienić jego zachowanie, to z całą pewnością skorzystamy z akcji lub filtra. Praktycznie każdy znaleziony w Sieci kawałek kodu używa jednego z tych dwóch elementów. Ponieważ tekst ten nie jest raczej kierowany do programistów, to na tym zakończę wyjaśnienia dotyczące akcji i filtrów.

Jak wspomniałem na początku, wtyczka to zwykły skrypt PHP. Aby mógł on zostać zidentyfikowany i zainstalowany przez WordPressa, musi posiadać specjalny nagłówek. Może on wyglądać na przykład tak:


Warto dodać, że wymagana jest tylko pierwsza linia, czyli nazwa wtyczki - wszystkie pozostałe informacje są opcjonalne.

Niezależnie od tego, czy tworzymy wtyczkę na swoje własne potrzeby, czy też chcemy ją umieścić w repozytorium WordPressa, warto zadbać o to, aby jej nazwa była unikalna. WordPress posiada mechanizm automatycznych aktualizacji rozszerzeń, który posługuje się uproszczonymi nazwami (slug) wtyczek i ich wersjami. Jeśli nazwiemy nasze rozszerzenie tak samo, jak rozszerzenie istniejące w repozytorium, to będziemy dostawali powiadomienia o aktualizacjach dla tego rozszerzenia, mimo że nasza wtyczka nie ma z nim nic wspólnego.

Po co tworzyć własną wtyczkę?

Jak napisałem na wstępie, własne wtyczki mogą nam ułatwić pracę. Podczas tworzenia strony opartej na WordPressie praktycznie zawsze musimy skorzystać z jakichś modyfikacji. Jeśli zastanowiliśmy się gdzie umieścić nasz własny kod, to może się okazać, że większość naszych zmian jest na tyle uniwersalna, że możliwe jest wykorzystanie ich nie tylko na stronie, nad którą aktualnie pracujemy, ale również w innych serwisach. W takim przypadku aż prosi się żeby modyfikacje te umieścić we wtyczce, którą później w razie potrzeby po prostu skopiujemy na inny serwer.

Nasza pierwsza wtyczka

Wiemy już jak powinien wyglądać nagłówek wtyczki, pora więc na dodanie do niej kodu. Jako przykładem posłużę się bardzo popularną modyfikacją, usuwającą "#more-999" z linków "Czytaj dalej". Mnie osobiście ten dodatek w adresie bardzo irytuje, uważam go za zbędny i zawsze usuwam. Kod modyfikacji jest bardzo prosty:

function wpzen_remove_more_link_scroll($link) {
   $link = preg_replace('|#more-[0-9]+|', '', $link);
   return $link;
}
add_filter('the_content_more_link', 'wpzen_remove_more_link_scroll');

Ponieważ wykorzystuję ten kod na praktycznie każdej budowanej stronie, mogę stworzyć sobie z niego prostą wtyczkę:


Teraz musimy zapisać ten kod w pliku o rozszerzeniu .php (na przykład usuwacz-more.php) i umieścić go w katalogu wp-content/plugins/. W dobrym tonie (czyli dla zachowania porządku) jest umieszczenie go wewnątrz własnego katalogu, na przykład wp-content/plugins/usuwacz-more/. Gdy to zrobimy, wystarczy przejść do panelu administracyjnego WordPressa, otworzyć panel zarządzania wtyczkami i aktywować nasze dzieło.

Wtyczka Usuwacz More

Proste, prawda? Oczywiście do wtyczki możemy dodać więcej kodu - nic nie stoi na przeszkodzie, aby wszystkie niezbędne na naszej stronie modyfikacje wrzucić do jednego rozszerzenia. Pamiętajmy również, że mechanizm wtyczek WordPressa oferuje znacznie większe możliwości niż te zaprezentowane w tym krótkim tekście. Ja jednak obiecałem, że na tym blogu nie będę zagłębiać się w tajniki programowania - od tego są inne serwisy.

Bezpośredni link