Novinka: Vizuální editor pro éru AI webů: www.directedit.dev

💬

Globální nastavení – telefon a e-mail bez ACF

Jak si udělat globální nastavení pro telefon a e-mail bez ACF pluginu.

Jitka Klingenbergová
Jitka Klingenbergová
Vytvořeno: 9. 9. 2026 | Aktualizováno: 9. 9. 2026

Snad na každém webu klientů řeším kontaktní údaje. Většinou je to e-mail a telefon, jenže je překvapivě na mnoha místech – hlavička, patička, kontakt, různě po webu… A pokud si klient změní e-mail (to se moc nestává) nebo telefon (to už ano), hledat to všude po webu a měnit a noční můra. A čím větší je web, tím větší je pravděpodobnost, že nějaké místo zapomenete.

Nešlo mi to jinak? No jasně, šlo.

Globální nastavení v adminu

Do administrace si můžete přidat globální pole, např. telefon a e-mail. Já tam mám ještě odkazy (mailto a tel), abych měla všude jednotný formát (protože třeba tel. číslo chcete bez mezer, ale ukázat ho chcete s mezerami).

A díky kousku kódu níže si můžete tyhle dvě (reps. čtyři) hodnoty přidat do administrace v menu. A pak je jednoduše vkládat do webu, třeba shortocodem:

  • [gn_telefon], reps. [gn_telefon_link]
  • [gn_email], reps. [gn_email_link]

// === Global settings - phone and email ==

add_action('admin_menu', function () {
    add_menu_page(
        'Globální nastavení',
        'Globální nastavení',
        'manage_options',
        'globalni-nastaveni',
        'gn_render_settings_page',
        'dashicons-admin-generic',
        2
    );
});

add_action('admin_init', function () {
    register_setting('gn_settings_group', 'gn_telefon');
    register_setting('gn_settings_group', 'gn_telefon_link');
    register_setting('gn_settings_group', 'gn_email');
    register_setting('gn_settings_group', 'gn_email_link');
});

// 3) admin page with form
function gn_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Globální nastavení</h1>
        <form method="post" action="options.php">
            <?php settings_fields('gn_settings_group'); ?>
            <table class="form-table">
                <tr>
                    <th><label for="gn_telefon">Telefon</label></th>
                    <td><input type="text" id="gn_telefon" name="gn_telefon"
                        value="<?php echo esc_attr(get_option('gn_telefon')); ?>" class="regular-text"></td>
                </tr>
				<tr>
                    <th><label for="gn_telefon_link">Telefon (link)</label></th>
                    <td><input type="text" id="gn_telefon_link" name="gn_telefon_link"
                        value="<?php echo esc_attr(get_option('gn_telefon_link')); ?>" class="regular-text"></td>
                </tr>
                <tr>
                    <th><label for="gn_email">Email</label></th>
                    <td><input type="email" id="gn_email" name="gn_email"
                        value="<?php echo esc_attr(get_option('gn_email')); ?>" class="regular-text"></td>
                </tr>
                <tr>
                    <th><label for="gn_email_link">Email (link)</label></th>
                    <td><input type="text" id="gn_email_link" name="gn_email_link"
                        value="<?php echo esc_attr(get_option('gn_email_link')); ?>" class="regular-text"></td>
                </tr>
            </table>
            <?php submit_button('Uložit'); ?>
        </form>
    </div>
    <?php
}

// 4) shortcodes
add_shortcode('gn_telefon', function () {
    return esc_html(get_option('gn_telefon'));
});
add_shortcode('gn_telefon_link', function () {
    return esc_html(get_option('gn_telefon_link'));
});
add_shortcode('gn_email', function () {
    return esc_html(get_option('gn_email'));
});
add_shortcode('gn_email_link', function () {
    return esc_html(get_option('gn_email_link'));
});

Bricks – registrace jako proměnné

Pokud chcete ještě tyto proměnné zobrazit jako proměnné ve výběru dynamických dat v Bricks, přidejte ještě tento kousek.

// Bricks dynamic tags
add_filter('bricks/dynamic_tags_list', function ($tags) {
    $tags[] = [
        'name'  => '{gn_telefon}',
        'label' => 'Telefon (globální)',
        'group' => 'Globální nastavení',
    ];
    $tags[] = [
        'name'  => '{gn_telefon_link}',
        'label' => 'Telefon link (globální)',
        'group' => 'Globální nastavení',
    ];
    $tags[] = [
        'name'  => '{gn_email}',
        'label' => 'Email (globální)',
        'group' => 'Globální nastavení',
    ];
    $tags[] = [
        'name'  => '{gn_email_link}',
        'label' => 'Email link (globální)',
        'group' => 'Globální nastavení',
    ];
    return $tags;
});

add_filter('bricks/dynamic_data/render_tag', function ($tag, $post, $context) {
    if ($tag === '{gn_telefon}') return get_option('gn_telefon');
    if ($tag === '{gn_telefon_link}') return get_option('gn_telefon_link');
    if ($tag === '{gn_email}')  return get_option('gn_email');
    if ($tag === '{gn_email_link}')  return get_option('gn_email_link');
    return $tag;
}, 10, 3);


add_filter('bricks/dynamic_data/render_content', function ($content, $post, $context) {
    $content = str_replace('{gn_telefon}', get_option('gn_telefon'), $content);
    $content = str_replace('{gn_telefon_link}', get_option('gn_telefon_link'), $content);
    $content = str_replace('{gn_email}', get_option('gn_email'), $content);
    $content = str_replace('{gn_email_link}', get_option('gn_email_link'), $content);
    return $content;
}, 10, 3);

Pošlete to dál:

Jitka Klingenbergová

Jitka Klingenbergová

Absolventka ČVUT FIT oboru Informatika | Programátorka | Webová vývojářka, konzultantka a mentorka
tvorime@vyladeny-web.cz

Vaše komentáře

Zanechte první komentář

Pravidelná dávka užitečných tipů až do schránky