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

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

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

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

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

  • Упрощают добавление функционала в контент.
  • Позволяют повторно использовать код в разных местах сайта.
  • Обеспечивают безопасность, ограничивая прямой доступ к PHP.
  • Удобны для пользователей без технических знаний.

Теперь перейдем к практической части — как создать собственный шорткод.

Создание базового шорткода в WordPress

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

Пример простого шорткода, который выводит приветствие:

function wphost_hello_shortcode() {
    return '<p>Привет, это мой собственный шорткод!</p>';
}
add_shortcode('wphost_hello', 'wphost_hello_shortcode');

После добавления этого кода на сайте можно вставить в пост [wphost_hello], и в месте шорткода появится текст "Привет, это мой собственный шорткод!".

Объяснение кода

Функция wphost_hello_shortcode возвращает строку с HTML, которую WordPress вставляет вместо шорткода. Функция add_shortcode связывает тег wphost_hello и нашу функцию.

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

Чтобы сделать шорткод гибким, можно добавить параметры — атрибуты, которые передаются в шорткод и влияют на его вывод.

Расширим наш пример, чтобы шорткод принимал параметр name и выводил персональное приветствие:

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

Теперь в посте можно использовать [wphost_hello name="Алексей"], и выведется "Привет, Алексей!". Если параметр не передан, по умолчанию будет "Гость".

Безопасность и фильтрация

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

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

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

function wphost_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'count' => 5,
            'category' => ''
        ),
        $atts,
        'wphost_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="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></li>';
    }
    $output .= '</ul>';

    wp_reset_postdata();

    return $output;
}
add_shortcode('wphost_recent_posts', 'wphost_recent_posts_shortcode');

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

Разбор кода

Мы создаем объект WP_Query с параметрами количества записей и категории. Затем формируем HTML-список с ссылками на посты. В конце обязательно вызываем wp_reset_postdata(), чтобы не нарушить глобальный цикл WordPress.

Использование плагинов для создания шорткодов

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

  • Shortcoder — позволяет создавать свои шорткоды с HTML, JavaScript и PHP.
  • Custom Content Shortcode — для вывода пользовательского контента с атрибутами.
  • WP Shortcode — набор готовых шорткодов с возможностью расширения.

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

Советы по разработке шорткодов для WordPress

Именование функций и шорткодов

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

Обработка ошибок и защита

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

Кэширование результата

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

Заключение

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

Как решить проблему неработающих email-уведомлений WooCommerce
09.06.2026
Как использовать PHPMailer в WordPress для отправки писем
04.03.2026
Как отключить Emoji в WordPress для ускорения сайта
21.01.2026
Как отключить XML-RPC в WordPress без плагинов
30.12.2025
Как установить ограничение на количество попыток входа в WordPress
21.03.2026