Shortcode je jednoduchý kód, ktorý nám v rámci WordPressu poskytne dodatočnú funkcionalitu. Takmer určite poznáš Contact form 7 (CF7), čo je asi najpoužívanejší plugin pre kontaktné formuláre. CF7 si najprv vytvoríš v admine, tam sa ti ukáže jeho shortcode, ktorý potom vložíš do vybranej stránky na vybrané miesto a na front-ende sa ti zobrazí funkčný kontaktný formulár.
Najjednoduchší shortcode je slovo, ktoré je umiestnené v hranatých zátvorkách:
[shortcode]
Super správa je tá, že si shortcody môžeš jednoducho vytvárať aj sám a na mieru. Navyše, je to celkom jednoduché.
Najprv si vo functions.php, alebo vo vlastnom plugine, definujeme funkciu, teda čo má náš shortcode urobiť.
function lava_shortcode() {
echo 'Hello World';
}
Ako správne predpokladáš, použitím nášho shortcodu jednoducho vypíšeme hlášku „Hello World“. Aké úchvatné, však?
Keď teraz chceš tento shortcode použiť, nebude to možné, lebo nemáme definované, aké magické slovo má slúžiť ako shortcode. Takže ho musíme definovať a to pomocou funkcie add_shortcode();
add_shortcode( 'moj_prvy_shortcode', 'lava_shortcode' );
add_shortcode berie dva parametre. Prvým je magické slovo, ktorým vyvoláme shortcode a jeho spustenie na front-ende. Druhým parametrom je názov funkcie, ktorá sa na zavolanie shortcodu spustí. V našom prípade som funkciu (v prvom code editore) pomenoval lava_shortcode, rovnako sa teda musí volať aj tu.
Keď teraz niekde v rámci WordPressu hodíš shortcode [moj_prvy_shortcode], dostaneš výsledok funkcie lava_shortcode, čiže vlastne string Hello World.
Simple, nie?
Parametrizovanie
Shortcody samozrejme môžeme aj parametrizovať, to je prípad aj spomínaného CF7, kedy shortcode vyzerá napríklad takto:
[contact_form id=“7″]
To id 7 vlastne prepasíruje do funkcie parameter, ktorým je ID daného formulára. Ako užívateľ si totiž môžeš vytvoriť aj 50 formulárov a ak by si zadal len [contact_form], nestalo by sa nič, WordPress by nevedel, ktorý z tých 50 formov má vybrať. Alebo by to spadlo do warningu/erroru, keďže id je pravdepodobne povinný parameter funkcie. Tak či tak, svoj kontaktný formulár by si nedostal.
Takže ako na parametrizáciu? Jednoducho do funkcie dopíšeme parametre, ktoré bude očakávať:
function lava_shortcode($name) {
echo 'Hello'.$name;
}
Pre ilustráciu funkčnosti si teraz upravíme riadok 2 a namiesto Hello World napíšeme Hello a premennú $name.
Na riadku č.1 do zátvorky sme pridali premennú $name, čo je povinný parameter funkcie.
Shortcode teraz vyvoláme takým štýlom, že po magickom slove dáme medzeru a názov parametra rovná sa, a hodnotu parametra do úvodzoviek. Čiže takto:
[moj_prvy_shortcode name=“Jožo“]
Výstupom shortcodu bude „Hello Jožo„.
Na záver len krátka poznámka – parametrov vieme použiť aj viac, rovnako tak môžu byť parametre nepovinné a môžu byť akéhokoľvek dátového typu (kľudne array). Nepovinný parameter zadávame takto:
function lava_shortcode($name = "Jožo") {
echo 'Hello'.$name;
}
Keď teraz zavoláme shortcode s parametrom, ktorý bude iný ako Jožo, vypíše sa Hello {hodnota parametra}. Ak ale zavoláme shortcode bez parametra, vypíše sa Hello Jožo. Lebo Jožo je default hodnota parametra.