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

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

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

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

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

Регистрация собственного шорткода: базовый пример

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

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

Теперь, если в редакторе WordPress добавить шорткод [premiumwp_hello name="Анна"], на странице появится текст: Привет, Анна! Добро пожаловать на сайт.

Функция shortcode_atts() помогает задать значения по умолчанию для параметров шорткода, а esc_html() обеспечивает безопасность вывода, предотвращая XSS-уязвимости.

Расширение шорткода: передача параметров и вложенный HTML

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

Создадим шорткод [premiumwp_button url="https://premiumwp.ru"]Текст кнопки[/premiumwp_button], который выведет стилизованную кнопку.

function premiumwp_button_shortcode($atts, $content = null) {
    $atts = shortcode_atts( array(
        'url' => '#',
        'color' => '#0073aa',
    ), $atts, 'premiumwp_button' );

    $url = esc_url($atts['url']);
    $color = esc_attr($atts['color']);
    $text = $content ? esc_html($content) : 'Кнопка';

    return '<a href="' . $url . '" style="background-color:' . $color . '; color:#fff; padding:10px 20px; text-decoration:none; border-radius:4px;">' . $text . '</a>';
}
add_shortcode('premiumwp_button', 'premiumwp_button_shortcode');

В этом примере мы принимаем два параметра — url и color — и используем контент внутри шорткода как текст кнопки. Такой подход делает шорткод универсальным и легко настраиваемым.

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

Иногда возникает необходимость вывести шорткод напрямую из PHP-файлов темы, например, в файле single.php или page.php. Для этого используют функцию do_shortcode().

Пример вызова шорткода в PHP-коде:

echo do_shortcode('[premiumwp_hello name="Пользователь"]');

Это удобно для интеграции динамического контента в шаблоны без копипаста шорткодов в редактор.

Лучшие практики разработки шорткодов в WordPress

Используйте префиксы для функций и шорткодов

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

Обрабатывайте входные данные безопасно

Всегда фильтруйте и экранируйте входные данные с помощью функций esc_html(), esc_url() и подобных. Это защитит ваш сайт от XSS-атак и других уязвимостей.

Поддерживайте производительность

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

Пример сложного шорткода: вывод последних записей с кастомными параметрами

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

function premiumwp_latest_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => 5,
        'category' => '',
    ), $atts, 'premiumwp_latest_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>';
    }
    $output .= '</ul>';

    wp_reset_postdata();

    return $output;
}
add_shortcode('premiumwp_latest_posts', 'premiumwp_latest_posts_shortcode');

Использование: [premiumwp_latest_posts count="3" category="novosti"] выведет 3 последних записи из категории «новости».

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

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

Еще один полезный инструмент — плагин Debug Bar, который помогает отслеживать ошибки и запросы к базе данных.

Для быстрого тестирования шорткода можно использовать простой плагин Code Snippets, где можно добавлять и исполнять пользовательский PHP-код без правки файлов темы.

WooCommerce: как настроить авторизацию через социальные сети без плагинов
20.04.2026
Как настроить обработку загрузки и проверки файлов в WordPress
24.11.2025
Оптимальная настройка AJAX в WordPress для улучшения производительности
21.02.2026
Как создать автоматическую оптимизацию базы данных WordPress
23.03.2026
Как отключить AJAX в контактной форме WordPress
29.03.2026