Průvodce WordPress hooky: actions a filters

Co jsou WordPress hooky
Systém WordPress hooků je základem, který vám umožňuje rozšiřovat a upravovat WordPress, aniž byste přímo měnili zdrojový kód. Hooky jsou body v kódu WordPressu, kam můžete připojit vlastní funkce, jež se spustí v určitém okamžiku nebo upraví data procházející systémem. Bez hooků by každá úprava vyžadovala přímou změnu core souborů WordPressu, která by se ztratila při každé aktualizaci.
Existují dva typy hooků – actions a filters. Actions umožňují spustit kód v určitém okamžiku životního cyklu WordPressu, zatímco filters umožňují upravit data předtím, než se zobrazí nebo uloží. Pochopení těchto dvou konceptů je klíčové pro každého WordPress vývojáře, protože jsou základem pro tvorbu šablon, pluginů a vlastní funkcionality.
Actions – spuštění kódu ve správný okamžik
Jak actions fungují
Action hook je místo v kódu WordPressu, kam je vloženo volání funkce do_action. Když WordPress během běhu dospěje k tomuto bodu, zkontroluje, zda jsou k danému hooku připojeny funkce, a spustí je v pořadí podle priority. Například action wp_head se spustí uvnitř tagu head každé stránky, wp_footer se spustí před uzavíracím tagem body a init se spustí na začátku každého načtení WordPressu poté, co jsou načteny všechny pluginy.
Použití add_action
Funkce add_action přijímá čtyři parametry – název hooku, callback funkci, prioritu a počet argumentů. Priorita určuje pořadí spuštění, když je ke stejnému hooku připojeno více funkcí, přičemž výchozí hodnota je 10, kde nižší číslo znamená dřívější spuštění. Pokud chcete například přidat kód Google Analytics do hlavičky webu, připojte funkci k hooku wp_head s prioritou 1, aby se spustila mezi prvními. Pokud chcete přidat CSS až po všech pluginech, použijte prioritu 99.
Nejčastější action hooky
- init: Spouští se na začátku každého požadavku poté, co se načtou pluginy. Ideální pro registraci vlastních typů příspěvků, taxonomií a shortcodů.
- wp_enqueue_scripts: Správný způsob, jak přidat CSS a JavaScript soubory na frontendu. Používá funkce wp_enqueue_style a wp_enqueue_script pro správu závislostí a zamezení duplikátům.
- admin_init: Spouští se na začátku každé admin stránky. Použijte pro registraci nastavení pluginu, kontrolu oprávnění nebo přesměrování.
- save_post: Spouští se při uložení nebo aktualizaci příspěvku. Ideální pro ukládání vlastních meta dat, validaci obsahu nebo odesílání notifikací.
- wp_login a wp_logout: Spouští se při přihlášení a odhlášení uživatele. Použijte pro logování aktivity, přesměrování nebo mazání cache.
- template_redirect: Spouští se před načtením šablony. Ideální pro vlastní přesměrování nebo kontrolu přístupu na stránku.
Filters – modifikace dat
Jak filters fungují
Filter hook funguje podobně jako action hook, ale s klíčovým rozdílem – filter přijme data, upraví je a vrátí upravená data. WordPress používá funkci apply_filters k průchodu dat všemi připojenými filter funkcemi. Každá filter funkce musí vrátit hodnotu, protože jinak se data stanou prázdnými. Například filter the_content protáhne obsah příspěvku všemi připojenými funkcemi předtím, než jej zobrazí, čímž umožňuje pluginům přidávat tlačítka pro sdílení na sociálních sítích, související příspěvky nebo reklamy uvnitř obsahu.
Použití add_filter
Funkce add_filter má stejnou syntaxi jako add_action – název hooku, callback funkci, prioritu a počet argumentů. Klíčový rozdíl je v tom, že callback funkce musí přijmout alespoň jeden argument představující data k filtrování a musí vrátit upravená nebo původní data. Pokud vaše filter funkce nevrátí hodnotu, data se ztratí, což může web rozbít. Vždy testujte filter funkce, abyste se ujistili, že vracejí správnou hodnotu i v okrajových případech.
Nejčastější filter hooky
- the_content: Filtruje obsah příspěvku před zobrazením. Tento filter používají formátovací pluginy, shortcody a úpravy obsahu.
- the_title: Filtruje název příspěvku. Použijte pro přidávání prefixů, sufixů nebo programové formátování názvů.
- wp_mail: Filtruje parametry e-mailu před odesláním. Můžete upravit příjemce, předmět, obsah nebo hlavičky e-mailu.
- login_redirect: Filtruje URL, na kterou je uživatel po přihlášení přesměrován. Použijte pro vlastní přesměrování podle role uživatele.
- excerpt_length: Filtruje délku automaticky generovaného úryvku. Výchozí hodnota je 55 slov.
- upload_mimes: Filtruje povolené typy souborů pro nahrávání. Použijte pro přidání podpory SVG nebo jiných formátů.
Vytváření vlastních hooků
Vlastní action hooky
Při vývoji pluginu nebo šablony vám tvorba vlastních hooků umožňuje, aby ostatní vývojáři rozšiřovali vaši funkcionalitu, aniž by měnili váš kód. Umístěte volání do_action na místa, kde chcete povolit rozšíření – například před a po zobrazení formuláře, před uložením dat nebo po zpracování objednávky. Pojmenovávejte hooky prefixem svého pluginu, abyste se vyhnuli konfliktům s jinými pluginy, například myplugin_pre_save_data. Dokumentujte dostupné hooky s popisem toho, kdy se spouštějí a jaké argumenty předávají.
Vlastní filter hooky
Používejte apply_filters na místech, kde chcete povolit modifikaci dat. Pokud například váš plugin generuje seznam položek, protáhněte pole položek filtrem před zobrazením. Ostatní vývojáři mohou připojit filter, aby položky přidali, odebrali nebo upravili. U každého filtru jasně zdokumentujte typ filtrovaných dat, očekávaný formát návratové hodnoty a kontext, ve kterém je filter použit. Díky tomu bude váš plugin příjemný na rozšiřování a sníží se potřeba přímých úprav.
Vývoj pluginů s hooky
Struktura pluginu
Každý WordPress plugin začíná hlavičkovým komentářem obsahujícím název pluginu, popis, verzi, autora a licenci. Hlavní soubor pluginu obvykle registruje hooky v konstruktoru třídy nebo v inicializační funkci. Organizujte kód do tříd s metodami pro každou funkcionalitu a používejte konstruktor k registraci všech hooků na jednom místě. Díky tomu je kód čitelný a snazší na údržbu, protože všechny hooky vidíte na jednom místě.
Aktivace a deaktivace
WordPress poskytuje speciální hooky register_activation_hook a register_deactivation_hook, které se spouštějí při aktivaci a deaktivaci pluginu. Aktivační hook použijte pro vytváření databázových tabulek, nastavení výchozích možností a naplánování cron jobů. Deaktivační hook použijte pro vyčištění naplánovaných cron jobů a dočasných dat. Pro úplné odstranění dat při smazání pluginu vytvořte soubor uninstall.php, který smaže možnosti z databáze, vlastní tabulky a nahrané soubory.
Osvědčené postupy
Vždy používejte prefixy pro názvy funkcí a tříd, abyste se vyhnuli konfliktům s jinými pluginy. Před registrací zkontrolujte, zda hook existuje, abyste předešli chybám. Použijte has_action a has_filter ke kontrole, zda je k určitému hooku již někdo připojen. Hooky odstraňujte pomocí remove_action a remove_filter, když potřebujete upravit chování jiného pluginu nebo šablony. Při odstraňování je klíčová priorita – musíte použít stejnou prioritu, jaká byla použita při přidávání.
Debugování hooků
Nástroje pro debugování
Plugin Query Monitor je nepostradatelným nástrojem pro debugování hooků, který zobrazuje všechny registrované hooky, pořadí spuštění a čas, který každý hook spotřebuje. Konstanta WP_DEBUG ve wp-config.php zapíná zobrazování PHP chyb a varování, které pomáhají identifikovat problémy s hooky. Plugin Debug Bar přidává do admin lišty panel s informacemi o hoocích, databázových dotazech a využití paměti. Pro pokročilé debugování umožňuje Xdebug s VS Code nastavit breakpointy uvnitř callback funkcí hooků.
Časté chyby
Nejčastější chybou je filter funkce, která nevrací hodnotu, což vede k prázdnému obsahu. Další běžnou chybou je neshoda počtu argumentů mezi registrací hooku a callback funkcí. Nekonečná smyčka nastává, když filter upraví data způsobem, který znovu spustí tentýž filter. Použijte statickou proměnnou nebo příznak, abyste zabránili rekurzi. Špatná priorita může způsobit, že vaše funkce nefunguje, protože předchozí hook změnil data neočekávaným způsobem. Na WordPress hostingových plánech BeoHosting máme prostředí optimalizované pro vývoj pluginů s podporou debugovacích nástrojů a dostatkem PHP paměti pro složité řetězce hooků.
Závěr
Systém WordPress hooků je výkonný a elegantní mechanismus, který umožňuje nekonečné rozšiřování WordPressu. Actions vám dávají možnost spustit kód ve správný okamžik, zatímco filters umožňují modifikaci dat kdekoli v systému. Pochopení hooků je klíčem k přechodu od uživatele k vývojáři a otevírá dveře k tvorbě profesionálních pluginů a šablon. Začněte s nejčastěji používanými hooky, experimentujte s úpravami a postupně budujte složitější funkcionalitu. Pokud teprve instalujete WordPress, přečtěte si náš návod na instalaci.
BeoHosting Team
10+ let zkušeností — Specialisté na webhosting a infrastrukturu
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Naposledy aktualizováno: