WordPress tip: snadné pojmenování akcí a filtrů

Když se pořádně naučíte programovat ve WordPressu, zamilujete si nepochybně akce a filtry stejně jako já a budete jich aplikovat ve vašem kódu desítky či stovky.

To má ale několik nevýhod

  1. furt musíte vymýšlet, jak je pojmenovávat, a to tak, abyste je pak zas nějak našli
  2. přitom se ale nesmí funkce se stejným názvem opakovat, jinak dojde ke konfliktu
  3. mám pak někdy tunu funkcí, které se aplikují na stejnou akci/filtr a různě se kříží či dělají to samé
  4. nesmí se tyto funkce jmenovat stejně, jako funkce, které definovali autoři WP či pluginů.
  5. optimálně by měly být funkce a filtry snadno přenosné i na další weby

Za těch 10 let co s WP dělám jsem si vymyslel systém, který všechny tyto problémy řeší – pojmenovávám své akce a filtry vždy přesně podle názvu dané akce či filtru a před to používám jednotný prefix.

Např. si řeknu, že budu jako prefix vždy používat své jmého, tedy „kapler_“. Takže když chci vytvořit funkci k filtru sanitize_tile, prostě ji pojmenuji kapler_sanitize_title. Tedy funkce z minulého příspěvku by vypadala takto

function kapler_sanitize_title($title) {
    return str_replace('+', '-', $title); // sanitize plus with dash
}
add_filter('sanitize_title', 'kapler_sanitize_title');

Pointa je, že:

  1. nemusím přemýšlet ani vteřinu nad názvem a přitom se nikdy nebude jmenovat jako funkce někoho jiného (mé jméno je celkem unikátní)
  2. každý filtr či akce má vždy jednu mou funkci, tedy nemůže dojít ke konfliktu, resp. když dojde, tak vím, že už jsem tuto funkci aplikoval jinde a můžu je tak sloučit
  3. Tím že mám všechny filtry vztahující se k jedné proměnné u sebe, nehrozí, mnohem snadněji zkontroluji, jestli se nějak nekříží
  4. Takové funkce snadno přenesu i na jiné weby, protože mají prostě vždy stejnou strukturu

Teoretickou nevýhodou je snad jen ztráta té informace o tom, co daná funkce dělá z názvu funkce. Ale to jen na první pohled. Ve skutečnosti ta funkce už svým názvem prostě jasně říká, že se něco provádí s filtrem sanitize_title. A co konkrétně se provádí, to je pak definováno komentáři u těch jednotlivých úprav.

Klíčové je, že pakliže změním/rozšířím funkcionalitu, nemusím měnit název funkce, aby přesně vyjadřoval její funkčnost. Tedy když budu chtít nahrazovat nejen + ale i = za pomlčku, tak nemusím funkci přejmenovávat z „plus_to_dash“ na „plus_and_equals_to_dash“, ani nemusím vytvářet druhou funkci „equals_to_dash“ aplikovanou na stejný filtr, ani nemusím mít neodpovídající chování funkce „plus_to_dash“, kdyby dělala něco jiného, než jen „plus to dash“.

Prostě bych jen změnil nahrazování za

str_replace(array('+','='), '-', $title)

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *