WordPress Hooks - Actions i Filters dla developerów

Hooks to fundament programowania WordPress. Pozwalają modyfikować działanie WordPressa bez edycji plików core. Dwa typy: Actions (wykonują kod) i Filters (modyfikują dane). Niezbędna wiedza dla każdego developera.

Krótka odpowiedź

Actions wykonują kod w określonym momencie (np. po zapisaniu posta). Filters modyfikują dane przepływające przez WordPress (np. zmiana tytułu). Używasz add_action('hook', 'funkcja') i add_filter('hook', 'funkcja'). Hooks są wszędzie - core, motywy, wtyczki.

Actions vs Filters

Actions (do_action):
- Wykonują kod w określonym momencie
- Nie zwracają wartości
- Przykład: wyślij email po publikacji posta

```php
add_action('publish_post', function($post_id) {
// Wyślij email
wp_mail('[email protected]', 'Nowy post', 'Opublikowano post ID: ' . $post_id);
});
```

Filters (apply_filters):
- Modyfikują dane
- Muszą zwrócić wartość
- Przykład: zmień tytuł posta

```php
add_filter('the_title', function($title) {
return strtoupper($title); // Wielkie litery
});
```

Kluczowa różnica:
- Action: coś zrób
- Filter: coś zmień i zwróć

Popularne Actions

Inicjalizacja:
- init - po załadowaniu WP, przed headers
- wp_loaded - całkowicie załadowany WP
- admin_init - inicjalizacja panelu admin

Posty:
- save_post - przy zapisie posta
- publish_post - przy publikacji
- delete_post - przy usuwaniu
- wp_insert_post - po wstawieniu do bazy

Frontend:
- wp_head - w sekcji
- wp_footer - przed
- wp_enqueue_scripts - ładowanie skryptów/stylów

Użytkownicy:
- user_register - po rejestracji
- wp_login - po zalogowaniu
- wp_logout - po wylogowaniu

Przykład:
```php
add_action('wp_head', function() {
echo '';
});
```

Popularne Filters

Treść:
- the_content - treść posta
- the_title - tytuł posta
- the_excerpt - zajawka
- the_permalink - URL posta

Query:
- pre_get_posts - modyfikacja zapytania przed wykonaniem
- posts_where - klauzula WHERE
- posts_orderby - sortowanie

Admin:
- manage_posts_columns - kolumny w liście postów
- post_row_actions - akcje przy poście

Inne:
- body_class - klasy body
- upload_mimes - dozwolone typy plików
- login_redirect - przekierowanie po logowaniu

Przykład:
```php
add_filter('the_content', function($content) {
if (is_single()) {
$content .= '

Dziękujemy za przeczytanie!

';
}
return $content;
});
```

Tworzenie własnych hooks

Tworzenie Action:
```php
// W kodzie motywu/wtyczki:
do_action('my_custom_action', $arg1, $arg2);

// Użycie:
add_action('my_custom_action', function($arg1, $arg2) {
// Twój kod
}, 10, 2); // 10 = priorytet, 2 = liczba argumentów
```

Tworzenie Filter:
```php
// W kodzie:
$value = apply_filters('my_custom_filter', $default_value, $context);

// Użycie:
add_filter('my_custom_filter', function($value, $context) {
if ($context == 'special') {
return 'Modified: ' . $value;
}
return $value;
}, 10, 2);
```

Priorytet:
- Domyślnie 10
- Niższy = wcześniej
- Wyższy = później

Usuwanie hooks:
```php
remove_action('hook', 'function_name', 10);
remove_filter('hook', 'function_name', 10);
```

Wspomniane narzędzia

WordPress Hooks Actions Filters PHP

Najczęściej zadawane pytania

Gdzie umieszczać kod z hooks?
Najlepiej w functions.php motywu potomnego lub we własnej wtyczce. Nigdy nie edytuj plików core WordPressa ani bezpośrednio motywów premium - zmiany znikną po aktualizacji. Dla prostych modyfikacji: Code Snippets (wtyczka).
#wordpress#hooks#actions#filters#development#php

Potrzebujesz pomocy specjalisty?

Skorzystaj z naszych usług w największych miastach Polski