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.


Twój komentarz





Niektóre tagi XHTML są dozwolone
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>