Как использовать шорткоды в WordPress для вставки динамического контента

Шорткоды в WordPress — это мощный инструмент для добавления динамического контента на страницы, записи и виджеты без необходимости писать сложный код прямо в редакторе. В этой статье подробно разберем, как создавать и использовать шорткоды в WordPressy, чтобы расширить функциональность сайта, сделать контент более интерактивным и удобным для управления.

Что такое шорткоды в WordPress: базовые понятия

Шорткод — это специальный тег в квадратных скобках, который WordPress распознает и заменяет на определённый контент при выводе страницы. Например, [gallery] — стандартный шорткод для вставки галереи изображений.

Преимущество шорткодов в том, что их можно использовать многократно, они динамичны и позволяют избежать дублирования кода. Кроме того, шорткоды можно создавать самостоятельно, чтобы реализовать уникальные задачи и интеграции.

Для создания собственного шорткода в WordPress используется функция add_shortcode(), которая связывает имя шорткода с функцией, возвращающей нужный контент.

Как создать шорткод в WordPressy: практический пример с параметрами

Рассмотрим, как создать простой шорткод [wpys_current_year], который будет выводить текущий год. Это полезно, например, для автоматического обновления копирайта в подвале сайта.

function wordpressy_current_year_shortcode() {
    return date('Y');
}
add_shortcode('wpys_current_year', 'wordpressy_current_year_shortcode');

Вставьте [wpys_current_year] в любой текстовый блок редактора — и на сайте отобразится текущий год.

Теперь усложним пример и добавим параметр. Создадим шорткод [wpys_button url="https://wordpressy.ru" text="Перейти на сайт"], который выведет кнопку с заданной ссылкой и текстом.

function wordpressy_button_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'url' => '#',
            'text' => 'Кнопка',
        ), $atts, 'wpys_button'
    );

    return '<a href="' . esc_url($atts['url']) . '" class="wpys-button">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('wpys_button', 'wordpressy_button_shortcode');

Чтобы кнопка выглядела красиво, добавьте CSS в тему или плагин:

.wpys-button {
    display: inline-block;
    padding: 10px 20px;
    background-color: #0073aa;
    color: #fff;
    text-decoration: none;
    border-radius: 4px;
    transition: background-color 0.3s ease;
}
.wpys-button:hover {
    background-color: #005177;
}

Использование вложенных шорткодов и обработка сложного контента

Иногда требуется, чтобы шорткод принимал другой шорткод или HTML внутри себя. Для этого в функции обработчика нужно использовать функцию do_shortcode() для обработки вложенного контента.

Например, создадим шорткод [wpys_box], который оборачивает контент в стилизованный блок:

function wordpressy_box_shortcode($atts, $content = null) {
    return '<div class="wpys-box">' . do_shortcode($content) . '</div>';
}
add_shortcode('wpys_box', 'wordpressy_box_shortcode');

CSS для блока:

.wpys-box {
    border: 2px solid #0073aa;
    padding: 15px;
    background-color: #f0f8ff;
    border-radius: 6px;
    margin: 10px 0;
}

Теперь можно комбинировать шорткоды, например:

[wpys_box]Текст внутри блока и кнопка: [wpys_button url="https://wordpressy.ru" text="Перейти"][/wpys_box]

Расширенные возможности шорткодов: использование AJAX для динамического контента

Для более сложных задач шорткоды можно использовать вместе с AJAX, чтобы подгружать или обновлять контент без перезагрузки страницы. Это актуально для форм обратной связи, фильтров, загрузки постов и др.

Пример: создадим шорткод [wpys_random_post], который выводит случайный заголовок поста при загрузке и обновляется по кнопке без перезагрузки.

PHP (functions.php или плагин):

function wordpressy_random_post_shortcode() {
    ob_start();
    ?>
    <div id="wpys-random-post"></div>
    <button id="wpys-load-post">Загрузить случайный пост</button>
    <script>
    document.getElementById('wpys-load-post').addEventListener('click', function() {
        fetch('<?php echo admin_url('admin-ajax.php?action=wpys_get_random_post'); ?>')
            .then(response => response.json())
            .then(data => {
                document.getElementById('wpys-random-post').innerHTML = data.title;
            });
    });
    // Загрузка при первой загрузке страницы
    document.getElementById('wpys-load-post').click();
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('wpys_random_post', 'wordpressy_random_post_shortcode');

function wordpressy_get_random_post_ajax() {
    $random_post = get_posts(array('numberposts' => 1, 'orderby' => 'rand'));
    if (!empty($random_post)) {
        wp_send_json(array('title' => esc_html($random_post[0]->post_title)));
    } else {
        wp_send_json(array('title' => 'Посты не найдены'));
    }
}
add_action('wp_ajax_wpys_get_random_post', 'wordpressy_get_random_post_ajax');
add_action('wp_ajax_nopriv_wpys_get_random_post', 'wordpressy_get_random_post_ajax');

Этот пример показывает, как интегрировать JavaScript fetch API и WordPress AJAX для динамического вывода данных.

Популярные плагины для работы с шорткодами и расширением функционала

Для тех, кто хочет упростить создание и управление шорткодами, существуют готовые решения:

  • Shortcodes Ultimate — большой набор готовых шорткодов с визуальным редактором;
  • WPGPT от WPSHOP — плагин для создания шорткодов с интеграцией GPT-3 и автоматическим генератором контента;
  • Clearfy Pro — плагин для оптимизации и расширения функционала, который также позволяет создавать кастомные шорткоды;
  • ABC Pagination — для создания пагинации через шорткоды;
  • WPRemark — шорткоды для отзывов и рейтингов.

Используйте эти инструменты, если хотите быстро внедрять сложные элементы на сайт без программирования.

Рекомендации по безопасности и производительности при работе с шорткодами

При создании шорткодов важно соблюдать несколько правил:

  • Всегда экранируйте пользовательские данные с помощью esc_html(), esc_url() или других функций безопасности WordPress;
  • Не вставляйте необработанный HTML из внешних источников, чтобы избежать XSS-уязвимостей;
  • Минимизируйте использование тяжелых запросов и кешируйте результаты, если данные не меняются часто;
  • Тестируйте шорткоды на совместимость с темой и другими плагинами, чтобы избежать конфликтов.

Например, для кеширования результата шорткода можно использовать транзиенты:

function wordpressy_cached_shortcode() {
    $cache = get_transient('wpys_cached_content');
    if ($cache !== false) {
        return $cache;
    }
    $output = 'Дорогие данные или запрос к API';
    set_transient('wpys_cached_content', $output, 3600); // Кеш на час
    return $output;
}
add_shortcode('wpys_cached', 'wordpressy_cached_shortcode');
Как использовать шорткоды в WordPress для вставки динамического контента
23.03.2026
Как создать автоматическое резервное копирование в WordPress без плагинов
28.01.2026
Как удалить неиспользуемые метаполя в WooCommerce и ускорить сайт
20.05.2026
Как избежать проблем с неправильным выполнением AJAX в WordPress
18.01.2026
Как установить ограничение на размер загружаемых файлов в WordPress
06.07.2026