# WordPress shortcodes: Kompletní průvodce

- Odkaz: https://tomas-shejbal.cz/wordpressito/wordpress-shortcodes-kompletni-pruvodce/
- Zveřejněno: 2026-03-04T11:55:44+01:00
- Autor: tom

# WordPress shortcodes: Kompletní průvodce

Shortcode umožňuje vkládat dynamický obsah do stránek a příspěvků.

Kodér může shortcode vytvořit jednou a uživatel webu si ho může vkládat do webu.

Shortcody umožňují přidat na tvůj WordPress mnoho užitečných funkcí, aniž bys, jako
uživatel, řešil PHP. Vytvořením vlastních shortcodů můžeš zjednodušit správu obsahu
a přidat vlastní funkce pro web.

A co se dá do shortcodes dát? Prakticky cokoliv: od vypsání jednoho slova po načtení
rezervačního formuláře.

![WordPressito - Shortcodes](https://tomas-shejbal.cz/wp-content/uploads/2026/03/
wordpressito_shortcodes.webp)

_Datum poslední změny: 4. 3. 2026_

_Poznámka: Pokročilejší uživatel si shortcode může tvořit sám. Článek můžeš číst
jako přehled toho, co je možné. Nebo se do tématu ponoř víc a vytvoř si svůj první
shortcode. Na konci článku ukazuju jak na vytvoření vlastního pluginu, kde shortcode
zaregistruješ._

## 1. Vytvoření jednoduché PHP funkce

Nejprve si ukážeme, jak vytvořit jednoduchou PHP funkci, která sečte dvě čísla.

    ```wp-block-code
    function my_simple_addition($a, $b) {
        $sum = $a + $b;
        echo "Součet čísel $a a $b je: $sum";
        return $sum;
    }
    ```

Tato funkce přijímá dva parametry (`$a` a `$b`), sečte je, výsledek vypíše a zároveň
vrátí hodnotu součtu.

Pokud bychom chtěli funkci použít v PHP šabloně/vlastním pluginu/PHP snippetu, volali
bychom ji takto:

    ```wp-block-code
    <?php my_simple_addition(5, 3); ?>
    ```

Výsledkem na webu v místě vložení kódu je: "Součet čísel 5 a 3 je: 8".

PHP funkci však běžný uživatel volat nebude. Pojďme to vyřešit.

## 2. Vytvoření základního shortcodu bez argumentů

Přetvoříme funkci na shortcode, který bude možné použít přímo v obsahu stránek nebo
příspěvků. Bez znalosti PHP. Začneme s jednoduchým shortcodem bez argumentů.

    ```wp-block-code
    // Jednoduchá funkce pro demonstraci shortcodu bez argumentů
    function simple_addition_shortcode() {
        // Pro jednoduchost budeme sčítat dvě pevně dané hodnoty
        $a = 5;
        $b = 3;
        $sum = $a + $b;

        return "Součet čísel $a a $b je: $sum";
    }

    // Registrace shortcodu
    add_shortcode('secti_zaklad', 'simple_addition_shortcode');
    ```

Vlastní shortcode použijeme kdekoliv na webu použitím WP bloku _shortcode_ (_zkrácený
kód_ v CZ):

    ```wp-block-code
    [secti_zaklad]
    ```

WordPress jej nahradí textem: "Součet čísel 5 a 3 je: 8"

> _Poznámka: Všimni si, že u shortcodu používám return místo echo. Je to proto, 
> že shortcody musí vracet obsah, který má být vložen do stránky._

## 3. Přidání argumentů do shortcodu

Nyní vylepšíme náš shortcode tak, aby mohl přijímat vstupní argumetny, jako tomu
bylo u původní funkce.

    ```wp-block-code
    // Funkce pro sčítání dvou čísel
    function my_simple_addition($a, $b) {
        $sum = $a + $b;
        return "Součet čísel $a a $b je: $sum";
    }

    // Funkce pro shortcode s argumenty
    function addition_shortcode($atts) {
        // Definování výchozích hodnot pro atributy
        $atts = shortcode_atts(array(
            'a' => 0,
            'b' => 0,
        ), $atts, 'secti');

        // Převod hodnot na čísla pro správné sčítání
        $a = floatval($atts['a']);
        $b = floatval($atts['b']);

        // Vrácení výsledku funkce
        return my_simple_addition($a, $b);
    }

    // Registrace shortcodu
    add_shortcode('secti', 'addition_shortcode');
    ```

Nyní můžeš ve svých stránkách nebo příspěvcích použít shortcode s vlastními hodnotami.
Funkci jsem současně přejmenoval na "secti":

    ```wp-block-code
    [secti a="10" b="20"]
    ```

Tento shortcode vypíše: "Součet čísel 10 a 20 je: 30"

## 4. Detailní pohled na shortcode_atts()

Funkce `shortcode_atts()` je klíčová pro práci s argumenty shortcodu. Má tři parametry:

 1. **Výchozí hodnoty** - asociativní pole výchozích hodnot pro vstupní argumenty
 2. **Argumenty shortcodu** - hodnoty zadané uživatelem
 3. **Název shortcodu** - slouží pro filtrování (nepovinné)

    ```wp-block-code
    $atts = shortcode_atts(array(
        'a' => 0,  // Výchozí hodnota pro argument 'a' je 0
        'b' => 0,  // Výchozí hodnota pro argument 'b' je 0
    ), $atts, 'secti');
    ```

Tato funkce slouží k tomu, aby nastavila výchozí hodnoty pro argumenty, které uživatel
nezadal

## 5. Praktické tipy a doporučení

### Správné umístění kódu

Shortcode můžeš umístit:

 1. Do _vlastního pluginu_ (custom plugin).
 2. Na méně vhodné místo _functions.php_ u _odvozené šablony_ (child theme).
 3. Nejméně vhodný je _php snippet_ přes nějaký plugin typu Code Snippet.

### Vytvoření vlastního pluginu pro shortcody

    ```wp-block-code
    <?php
    /**
     * Plugin Name: Moje Vlastni Shortcody
     * Description: Plugin obsahující užitečné shortcody pro web
     * Version: 1.0
     * Author: Vase Jmeno
     */

    // Shortcode pro sčítání
    function my_simple_addition($a, $b) {
        $sum = $a + $b;
        return "Soucet cisel $a a $b je: $sum";
    }

    function addition_shortcode($atts) {
        $atts = shortcode_atts(array(
            'a' => 0,
            'b' => 0,
        ), $atts, 'secti');

        $a = floatval($atts['a']);
        $b = floatval($atts['b']);

        return my_simple_addition($a, $b);
    }
    add_shortcode('secti', 'addition_shortcode');

    // Zde můžete přidat další shortcody
    ```

### Pozor na konflikty v názvu

Shortcody se musí jmenovat jedinečně, jinak hrozí konflikty s jinými pluginy. Zvaž
přidání prefixu specifického pro tvůj web nebo plugin:

    ```wp-block-code
    add_shortcode('mujweb_secti', 'addition_shortcode');
    ```

### Použití shortcodu v PHP kódu

Pokud potřebuješ použít shortcode v PHP kódu (například v šabloně), použij funkci`
do_shortcode()`:

    ```wp-block-code
    <?php echo do_shortcode('[secti a="10" b="20"]'); ?>
    ```

## Potřebuješ shortcode?

Potřebuješ shortcode a nechce se ti psát? Napiš mi a nějak to vymyslíme. 😉
