Wprowadzenie do hooków
Czym są hooki w WordPressie, jak działają akcje i filtry oraz jak z nich korzystać.
Hooki to mechanizm, dzięki któremu WordPress pozwala wtyczkom i motywom „podpiąć się” do niemal każdego etapu swojego działania — bez modyfikowania plików rdzenia. To fundament rozszerzalności WordPressa.
Jak to działa
W trakcie wykonywania żądania WordPress wywołuje tysiące punktów zaczepienia. Każdy hook ma:
- nazwę — np.
init,the_content,save_post, - typ — akcja (
do_action) lub filtr (apply_filters), - argumenty — wartości przekazywane do zarejestrowanych funkcji.
Zarejestrowane funkcje zwrotne (callbacki) są wykonywane w kolejności zależnej od priorytetu. Domyślny priorytet to 10.
Rejestracja callbacka
// akcja
add_action( 'wp_footer', 'moja_funkcja_w_stopce' );
function moja_funkcja_w_stopce() {
echo '<p>Wykonano z hooka wp_footer</p>';
}
// filtr — callback otrzymuje wartość i zwraca zmodyfikowaną
add_filter( 'the_title', 'moj_filtr_tytulu' );
function moj_filtr_tytulu( $title ) {
return strtoupper( $title );
}
Usuwanie zarejestrowanych callbacków
Wtyczki mogą też usuwać callbacki zarejestrowane przez inne wtyczki lub motyw:
remove_action( 'wp_head', 'wp_generator' );
remove_filter( 'the_content', 'wpautop' );
Gdzie umieszczać kod
W wtyczce rejestracje wykonuje się najczęściej bezpośrednio w pliku głównym, a w motywie — w functions.php. Do rejestracji samej w sobie nie potrzebujesz hooka init; wystarczy add_action( 'init', ... ) na poziomie pliku, o ile robisz to we właściwym momencie ładowania.
Zasady dobrej praktyki
- Zawsze nadawaj callbackom unikalne nazwy z prefiksem wtyczki lub motywu.
- Sprawdzaj kontekst (np.
is_admin(),is_main_query()), zanim coś zmienisz. - W filtrach zawsze zwracaj pierwotną wartość, gdy nie modyfikujesz danych.
- Pamiętaj o priorytecie, jeśli Twoja zmiana zależy od kolejności wykonania z innymi wtyczkami.
Sprawdź też: Akcje vs filtry oraz Priorytety i argumenty.