Создать собственный шорткод WordPress с поддержкой параметров

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

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

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

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

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

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

Создадим простой шорткод [wpplugin_hello], который выводит приветствие:

function wpplugin_hello_shortcode() {
    return '<p>Привет от wpplugin.ru!</p>';
}
add_shortcode('wpplugin_hello', 'wpplugin_hello_shortcode');

Добавьте этот код в файл functions.php вашей темы или в файл плагина. Теперь при вставке [wpplugin_hello] на страницу будет отображаться приветствие.

Добавление поддержки параметров в шорткод

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

Например, создадим шорткод [wpplugin_greeting name="Имя"]:

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

Теперь можно использовать [wpplugin_greeting name="Алексей"], чтобы вывести приветствие с именем.

Пример сложного шорткода с параметрами и внутренней логикой

Рассмотрим пример шорткода, который выводит список последних постов определённой категории с настройками количества и сортировки.

function wpplugin_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'category' => '',
            'posts' => 5,
            'order' => 'DESC',
        ), $atts, 'wpplugin_recent_posts'
    );

    $query_args = array(
        'posts_per_page' => intval($atts['posts']),
        'order' => $atts['order'],
        'post_status' => 'publish',
    );
    if (!empty($atts['category'])) {
        $query_args['category_name'] = sanitize_text_field($atts['category']);
    }

    $query = new WP_Query($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('wpplugin_recent_posts', 'wpplugin_recent_posts_shortcode');

Используйте шорткод так:

[wpplugin_recent_posts category="novosti" posts="3" order="ASC"]

Он выведет три последних поста из категории "novosti" в порядке возрастания.

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

При создании шорткодов важно учитывать безопасность и производительность. Никогда не выводите пользовательские данные напрямую — используйте функции экранирования, например, esc_html() или esc_url().

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

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

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

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

  • Shortcodes Ultimate — набор из более 50 мощных шорткодов с поддержкой параметров и кастомизации.
  • WP Shortcode by MyThemeShop — простой плагин для добавления популярных шорткодов.
  • Custom Content Shortcode — удобно создавать свои шорткоды с кастомным выводом.

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

Итоги: создаем шорткод под задачи сайта

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

Используйте функцию add_shortcode, обрабатывайте параметры через shortcode_atts и всегда проверяйте входные данные для безопасности. Если нужно — подключайте WP_Query для вывода постов или другую логику.

Так вы сможете быстро создавать полезные функции на wpplugin.ru и делиться опытом с коллегами.

Создание настраиваемой страницы настроек плагина WordPress с поддержкой AJAX
27.03.2026
Как сделать постоянный AJAX запрос без кэширования в WordPress
10.12.2025
Как создать автозапускаемые крон-задачи в WordPress
12.03.2026
Оптимизация загрузки изображений в WordPress с поддержкой WebP
08.04.2026
Как решить проблему не удаления товаров из WooCommerce после их удаления
22.04.2026