Od roku 2004, v ktorom uzrel svetlo internetového sveta WordPress 1.2, patria filtre a akcie k základným kameňov pre vývoj tém a modulov.
Háky (všeobecný termín pre tieto dve rozdielne skupiny PHP funkcií) umožňujú upraviť alebo rozšíriť funkcionalitu WordPress bez toho, aby sme museli akýmkoľvek spôsobom zasahovať do súborov jadra systému. Nižšie si ukážeme, že filter mení hodnotu obsahu a akcia dokáže k volanej funkcii pridať súbežne ďalšiu. Vďaka tomu máme k dispozícii veľmi silný nástroj k tvorbe jedinečného blogu či webovej prezentácie a zároveň sa nemusíme obávať problémov pri aktualizácii na najnovšiu verziu WP.
Filter spúšťa WordPress pri zmene textu alebo iných druhov obsahu pred pridaním do databáze alebo ich odoslaním do prehliadača. Váš modul môže určiť, že jedna alebo viac PHP funkcií zmení daný typ obsahu v danom čase.
Jednoduchým príkladom pre pochopenie, čo je základom fungovania hákov je ukážka už existujúcej funkcie a jej úpravy.
function get_excerpt($text, $length = 150) { $excerpt = substr($text,$length); return $excerpt; }
Táto funkcia obsahuje dva parametre: reťazec (string) a dĺžku, na ktorú ho chceme skrátiť. Želáte si dvesto znakov vo výpise príspevku namiesto predvolených 150 znakov? Žiaden problém, zmeníme parameter pri použití funkcie. V prvom rade aplikujeme filter pre funkciu, upravujúcu dĺžku výpisu.
function get_excerpt($text, $length = 150) { $length = apply_filters('excerpt_length', $length); $excerpt = substr($text,$length); return $excerpt; }
Názov tohoto filtra je excerpt_lenght a zatiaľ k nemu nie je pripojená žiadna funkcia, výpis preto ostáva na hodnote 150 znakov. Musíme teda systému povedať, že chceme “zaháknuť” filter excerpt_length a definovať novú hodnotu. Tú zmeníme nasledovným zápisom:
function get_excerpt($text, $length = 150) { $length = apply_filters('excerpt_length'); $excerpt = substr($text,$length); return $excerpt; } function modify_excerpt_length() { return 200; } add_filter('excerpt_length', 'modify_excerpt_length');
Hotovo, pre všetky výpisy platí pravidlo, že budú obsahovať 200 znakov. Bez zásahu do pôvodnej funkcie sme aplikáciou filtra upravili dĺžku výpisu príspevkov a zmena sa prejaví v každom zobrazenom výpise.
Akcia spúšťa WordPress v konkrétnych bodoch počas vykonávania príkazov, alebo keď dôjde ku konkrétnej udalosti. Váš modul môže pomocou akcie určiť, že jedna alebo viac PHP funkcií bude uskutočnených práve v týchto bodoch.
Ukážkou užitočnej akcie je vloženie odkazu na ikonu stránky do súboru header.php vo vašej aktívnej téme. Funkcia s názvom theme_favicon obsahuje HTML kód s adresou, na ktorej je uložený súbor favicon.ico, zápisom add_action(‚wp_head‘, ‚theme_favicon‘); povieme systému, že k funkcii wp_head chceme pripojiť našu funkciu vkladajúcu spomínaný kód medzi značky <head></haed> .
function theme_favicon() { ?> <link rel="shortcut icon" href="<?php bloginfo('stylesheet_directory') ?>/images/favicon.ico"/> <?php } add_action('wp_head', 'theme_favicon');
Dobrou správou je, že WordPress používa funkcie úplne všade a možnosti úprav sú v podstate neobmedzené, začínajúcich vývojárov by však mohol odradiť ich počet (aktuálne viac ako 1500). Nie je jednoduché orientovať sa v takom množstve funkcií, no v oficiálnej dokumentácii WordPress sa nachádzajú kvalitne spracované prehľady filtrov a akcií, dobrým štartom k štúdiu hákov je aj databáza hákov Adama R. Browna.