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

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

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

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

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

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

Пример базового шорткода

Рассмотрим самый простой пример: создадим шорткод, который выводит приветствие.

function wpclass_hello_shortcode() {
    return '<p>Привет, это мой первый шорткод!</p>';
}
add_shortcode('hello', 'wpclass_hello_shortcode');

Теперь, если на странице вставить [hello], пользователь увидит текст "Привет, это мой первый шорткод!".

Как создавать шорткоды с параметрами

Очень часто нужно, чтобы шорткод принимал параметры для гибкой настройки вывода. Например, мы хотим сделать шорткод [greeting name="Иван"], который будет приветствовать по имени.

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

function wpclass_greeting_shortcode($atts) {
    $atts = shortcode_atts(
        array('name' => 'Гость'),
        $atts,
        'greeting'
    );
    return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('greeting', 'wpclass_greeting_shortcode');

Теперь можно использовать [greeting name="Алексей"] для персонализированного приветствия.

Шорткоды для сложного функционала: пример с выводом списка последних постов

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

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

    return $output;
}
add_shortcode('latest_posts', 'wpclass_latest_posts_shortcode');

Используйте шорткод так: [latest_posts count="3" category="novosti"]. Вы получите список трёх последних постов из категории «новости».

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

При создании шорткодов важно учитывать безопасность, чтобы избежать XSS-атак и проблем с производительностью.

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

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

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

Чтобы включить шорткоды в текстовых виджетах, добавьте в functions.php:

add_filter('widget_text', 'do_shortcode');

Для вывода шорткода напрямую в шаблоне используйте функцию do_shortcode():

echo do_shortcode('[hello]');

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

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

  • Shortcodes Ultimate — набор из 50+ шорткодов для кнопок, вкладок, колонок, галерей и многого другого.
  • WPBakery Page Builder — визуальный конструктор с большим набором шорткодов и элементов.
  • Elementor — конструктор страниц с возможностью создавать собственные виджеты и шорткоды.

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

Заключение

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

Используйте примеры из статьи как отправную точку и экспериментируйте с параметрами, выводом и интеграцией в темы и плагины.

Как удалить неиспользуемые атрибуты и метаданные из WooCommerce
25.04.2026
Как сделать отслеживание изменений в постах WordPress с помощью хуков
24.12.2025
Как добавить автоматическое обновление плагинов в WordPress без сторонних библиотек
14.12.2025
Как запретить регистрацию пользователей в WooCommerce
28.02.2026
Как создать динамический фильтр таксономий в WordPress для удобства пользователей
07.04.2026