Как создать собственный шорткод в WordPress

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

Что такое шорткод в WordPress и зачем он нужен

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

Преимущества использования шорткодов:

  • Удобство вставки сложного контента без HTML.
  • Повторное использование функционала в разных местах сайта.
  • Упрощение работы контент-редакторов.

Давайте перейдём к практике и напишем простой шорткод, который выводит приветствие с именем пользователя.

Создание простого шорткода: пример с приветствием

Для регистрации шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и callback-функцию, которая возвращает HTML или текст для вывода. Код лучше размещать в файле functions.php вашей темы или в отдельном плагине.

function wptalk_greeting_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'name' => 'Гость',
        ), $atts, 'wptalk_greeting');
    return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на наш сайт.</p>';
}
add_shortcode('wptalk_greeting', 'wptalk_greeting_shortcode');

Объяснение:

  • shortcode_atts() — функция для обработки атрибутов шорткода с установкой значений по умолчанию.
  • esc_html() — экранирование вывода для безопасности.
  • Шорткод регистрируется с именем wptalk_greeting.

Теперь в редакторе вы можете написать [wptalk_greeting name="Андрей"] и получить: Привет, Андрей! Добро пожаловать на наш сайт.

Добавляем сложную логику: шорткод для вывода последних записей

Рассмотрим более сложный пример — шорткод, который выводит список последних записей с возможностью указать количество и категорию.

function wptalk_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'count' => 5,
            'category' => '',
        ), $atts, 'wptalk_recent_posts');

    $args = array(
        'posts_per_page' => intval($atts['count']),
        'post_status' => 'publish',
    );

    if (!empty($atts['category'])) {
        $args['category_name'] = sanitize_text_field($atts['category']);
    }

    $query = new WP_Query($args);

    if (!$query->have_posts()) {
        return '<p>Нет записей для отображения.</p>';
    }

    $output = '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul>';

    return $output;
}
add_shortcode('wptalk_recent_posts', 'wptalk_recent_posts_shortcode');

Этот шорткод можно использовать так: [wptalk_recent_posts count="3" category="novosti"]. Он выведет 3 последних записи из категории «novosti».

Работа с параметрами и безопасностью в шорткодах WordPress

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

  • sanitize_text_field() — для очистки текстовых данных.
  • esc_html() — для безопасного вывода в HTML.
  • intval() — для целочисленных значений.

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

Расширение шорткодов: вложенные шорткоды и кеширование

Иногда нужно, чтобы в выводе одного шорткода был другой. WordPress поддерживает вложенность шорткодов с помощью функции do_shortcode(). Например:

function wptalk_nested_shortcode() {
    return 'Вложенный шорткод: ' . do_shortcode('[wptalk_greeting name="Юзер"]');
}
add_shortcode('wptalk_nested', 'wptalk_nested_shortcode');

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

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

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

  • Shortcodes Ultimate — набор из более 50 шорткодов для разных задач (таблицы, кнопки, галереи).
  • WP Shortcode — простой плагин с базовыми элементами для добавления контента.
  • Custom Content Shortcode — для создания своих шорткодов через интерфейс.

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

Выводы и рекомендации по созданию шорткодов в WordPress

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

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

Как использовать хуки WooCommerce для добавления собственного поля на страницу оплаты
30.05.2026
Как избежать проблем со снижением производительности при массовом импорте продуктов в WooCommerce
13.05.2026
Как создать автоматический импорт из Google Sheets в WordPress
14.02.2026
Как отключить автоматические обновления WordPress: практические способы и примеры кода
02.02.2026
Автоматическое отключение неактивных товаров в WooCommerce
04.05.2026