WP HOOKS

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.