09 09 10 Użycie akcji w Wordpresie
Akcje, podobnie jak filtry są jednym z mechanizmów, które czynią Wordpresa niezwykle łatwym do rozszerzenia o własną funkcjonalność. Ten wpis ma na celu przedstawić czym są akcje i jak z nich korzystać.
Treść zawarta w tym wpisie zakłada, że znasz język programowania PHP w stopniu co najmnie podstawowym.
Technicznie, rzecz biorąc, akcja jest rodzajem haka, do którego można podłączyć metody klasy PHP lub funkcje zwrotne. Każda akcja posiada tag, który ją identyfikuje w kontenerze gdzie jest przetrzymywana. Akcje, podobnie jak filtry są wykonywane podczas tworznenia odpowiedzi na zapytanie z przeglądarki lub przy zapisie informacji do bazy danych.
Akcje różnią się od filtrów w tym, że te pierwsze zazwyczaj wyświetlają zawartość w postaci treści lub i znaczników lub dyskretnie wykonują jakąś dodatkową partię kodu PHP nie zwracają żadnych wartości, podczas gdy te drugie zwracają zmodyfikowane dane.
Kod tworzony przez akcje jest wyświetlany w miejscu gdzie została ona wywołana.
Właściwym miejscem do zdefiniowania funkcji tworzącej zawartość dla akcji są pliki wtyczki lub plik functions.php. Na potrzeby tego wpisu korzystam z tego drugiego rozwiązania.
Jak stworzyć akcję
Jak już wspomniałem, akcja, musi mieć podczepioną co najmniej jedną funkcję aby być użyteczną.
Funkcje dla akcji możemy zdefiniować jak poniżej:
function display_extra_styles() {
if(is_archive()){
$extra_style_src = TEMPLATEPATH . '/styles/extra_style.css';
wp_enqueue_style( 'my-styles',$extra_style_src);
}
}
Powyższa funkcja służy do włączenia dodatkowego odnośnika do arkusza styli w nagłówku dokumentu przy czym ma on zostać dodany tylko dla archiwum bloga. Funkcja należy umieścić w pliku functions.php.
Mając zdefiniowane to co chcemy osiągnąć, pozostaje dodać funkcję do akcji, tak aby mogła ona zostać wywołana w stosownym momencie.
Właściwą akcją do włączania arkuszy styli do sekcji head dokumentu jest ta o nazwie wp_print_styles. Aby podłączyć nowy kod do akcji wykorzystana zostanie funkcja add_action.
Funkcja add_action przyjmuje cztery argumenty. Pierwsze dwa tj. nazwa akcji oraz funkcja wykonywana podczas wywołania akcji są wymagane. Pozostałe dwa definiują wagę ( gdzie w kolejce funkcja z argumentu drugiego będzie wykonana ) oraz liczbę argumentów pobieranych przez funkcję zwrotną. Przykład dodania funkcji zdefiniowanej wyżej może wyglądać jak następuje:
add_action('wp_print_styles', 'display_extra_styles');
Usuwanie funkcji zwrotnych
Skoro funkcję do akcji można dodać, można ją takżę z niej usunąć. Realizje się to za pomocą funkcji remove_action, która przyjmuje dokładnie takie same argumenty jak poprzednio omawiana.
Aby usunąć poprzednio dodaną akcję należy umieścić kod jak poniżej w pliku functions.php:
remove_action('wp_print_styles', 'display_extra_styles');
Aby usunąć wszystkie funkcje zwrotne dla akcji wp_print_styles należy użyć funkcji remove_all_actions, która przyjmuje nazwę akcji i opcjonalnie wagę ( jeżeli zostanie określona, tylko funkcje o tej wadze zostaną usnięte ).
Własne akcje
Poprzednie przykłady zakładały wykorzystanie jednej z domyślnie zdefiniowanych akcji, mianowicie wp_print_scripts. Załóżmy jednak, że chcemy zdefiniować własną akcję. Wszystkie akcje w Wordpresie przechowywane są w tablicy PHP, w której kluczami są ich nazwy. Aby więc zdefiniować własną akcję należy stworzyć unikalną nazwę dla niej, dodać funkcję zwrotnę i wywołać.
Do definiowania i wywoływani własnych akcje służy funkcja do_action. Funkcja ta sprawdza, czy dla akcji o określonej nazwie (argument pierwszy) zarejestrowne są jakieś funkcje zwrotne. Jeżeli tak, wówczas wywołuje je z wartościami podanymi jako jej kolejne argumenty.
Jeżeli chcemy uruchomić akcję o nazwie my_own_action z funkcjami zwrotnymi o nazwach my_callback_1 i my_callback_2
, które uprzednio zostały umiesczone w pliku functions.php i dodane do akcji z pomocą add_action, w którymś z plików aktywnego motywu umieszczamy kod jak poniżej:
<?php do_action('my_own_action') ?>
Jeżeli funkcje zwrotne pobierają na przykład jeden argument, koniecznie będzie jego podanie jako drugi argument dla funkcji do_action.
<?php do_action('my_action',arg1) ?>
Więcej o akcjach
Nazwy większości nazw akcji uruchamianych dla typowego zapytania HTTP można znaleźć na tej stronie.
Istnieje również baza domyślnie zdefiniowanych akcji, w której jest aktualnie blisko 1350 haków (akcji i filtrów). Wspomnianą bazę można znaleźć na tej stronie.
Więcej informacji na temat funkcji haków można znaleźć na stronach opisujących API wtyczek kodeksu Wordpresa.
Domyślnie zdefiniowane akcje można znaleźć w pliku wp-includes/default-filters.php instalacji Wordpresa.
Autor wpisu jest blogerem, programistą PHP, administratorem Linux oraz twórcą blogów
RSS Subskrybuj wpisy bloga