Naprosto běžně se začátečník setkává s tím, že dostane od programátora radu, s kterou neví, jak má naložit. Mám na mysli snippety, které můžete najít na blozích, v diskuzích a podobně.
Proto jsem sepsal tento článek, abych pomohl uživatelům WordPressu, kteří s tím nemají zkušenosti, pochopit, jak snippety fungují a jak s nimi nakládat.
Když jsem upravoval některé z mých pluginů, často jsem přidával do kódu akce a filtry, jelikož jsem se chtěl vyhnout zbytečnému komplikování administrace pluginu a bobtnání zdrojového kódu.
Příkladem může být úprava ceny u pluginu pro Zásilkovnu
Plugin na základě hmotnosti objednávky hledá nastavení pro určitý rozsah, řekněme od dvou, do pěti kilogramů, protože objednávka váží tři kilogramy.
Toto nastavení vloží do proměnné $cost a ta se dále předává metodě add_rate(), čímž se vytvoří položka dopravy s definovanou cenou.
Plugin pro Zásilkovnu umožňuje nastavit cenu dle hmotnosti, ale jak postupovat, pokud potřebujeme cenu změnit, protože jeden produkt, který prodáváme, musí mít speciální obal, ay se nepoškodil?
Přidávat další nastavení do pluginu by bylo matoucí a úprava pro konkrétní e-shop nemá smysl, protože je třeba udržovat kompatibilitu a aktualizovatelnost pro všechny uživatele pluginu.
A zde přichází na řadu použítí filtru
Vezmeme proměnnou $cost a proženeme ji filtrem:
$cost = apply_filters( ‚zasilkovna_shipping_cost‘, $cost, $country, $weight );
Filtr umožňuje vzít proměnnou a použít ji jako argument vaší vlastní funkce, společně s pomocnými proměnnými, které jsou v tomto případě země a hmotnost zásilky.
A díky tomu může fungovat úprava, jenž, pokud je v košíku produkt s id 31, ztrojnásobí cenu dopravy pomocí Zásilkovny:
Pokud jste dočetli až sem, dočkáte se konečně pointy
Na začátku jsem psal, že uživatelé si často nevědí rady s kouskem kódu, který jim někdo poradí, nebo jim ho pošle programátor.
Co tedy dělat s WordPress snippetem?
Máte dvě možnosti:
- vložíte jej do souboru functions.php v šabloně
- vložíte jej do pluginu ve složce wp-content/plugins
Vložení snippetu do functions.php
Soubor functions.php je součástí WordPress šablony a pokud snippet zkopírujete a vložíte jej na konec souboru, měl by okamžitě začít fungovat.
Bohužel, soubor často funguje jako komora s harampádím, kde se hromadí věci, o kterých už nikdo neví, kdo a proč je tam dával, ale všichni se je bojí smazat.
Nesmíte zapomenout, že pokud používáte child theme, musíte dát snippet do aktivní child theme.
Nevýhodou souboru functions.php je, že pokud měníte šablonu, smažete i snippety.
Vložení do pluginu
Dalším způsobem, jak použít snippet, je vytvořit si vlastní plugin. Není to tak náročné, jak to vypadá. Plugin nemusí být komplikovaný, stačí jeden php soubor, do kterého budete snippety přidávat.
Může vypadat třeba takto https://github.com/Musilda/toret-zaokrouhleni/blob/master/toret-zaokrouhleni.php
Důležitá je jen hlavička s informacemi, aby WordPress poznal, že se jedná o plugin. Do souboru pak můžete přidávat snippety, jak budete potřebovat a úpravy se hned projeví.
Jsem příznivcem používání pluginů, to musím přiznat.
Plugin může zůstat aktivní i po změně šablony, úpravy nezmizí. Můžete do něj přidávat další snippety, nebo si takových pluginů můžete vytvořit více, podle typu úprav.
Zde neplatí, že mnoho pluginů výrazně zpomaluje WordPress, protože dopady tak malých souborů jsou minimální.
Závěr
Použití snippetů je poměrně jednoduché, ale musíte umět pracovat se soubory. Vložit je můžete do souboru functions.php, nebo do vlastního malého pluginu.
Vždy do kódu pište komentáře. Je úplně jedno, jak to budete formulovat, ale za rok se k tomu vrátíte, nebo dáte přístup programátorovi a nikdo, ani vy nebudete vědět, proč to tam je.