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

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

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

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

В этой статье мы разберем, как создать собственный shortcode в WordPress, разберем примеры с кодом и советы по безопасности и производительности.

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

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

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

Теперь, если в любом посте или странице вставить [wptool_hello], WordPress заменит его на <p>Привет, это мой первый шорткод!</p>.

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

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

Чаще всего нужно передавать параметры в шорткод для динамического вывода. Добавим параметр name для персонализации приветствия:

function wptool_hello_shortcode($atts) {
    $atts = shortcode_atts(array(
        'name' => 'гость'
    ), $atts, 'wptool_hello');

    return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('wptool_hello', 'wptool_hello_shortcode');

Теперь вызов [wptool_hello name="Иван"] выведет <p>Привет, Иван!</p>. Функция shortcode_atts объединяет переданные параметры с дефолтными, а esc_html предотвращает XSS-уязвимости.

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

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

function wptool_latest_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => 5
    ), $atts, 'wptool_latest_posts');

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

    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>';
    }
    wp_reset_postdata();
    $output .= '</ul>';

    return $output;
}
add_shortcode('wptool_latest_posts', 'wptool_latest_posts_shortcode');

Вы можете использовать [wptool_latest_posts count="10"], чтобы вывести 10 последних записей. Обратите внимание на важность очистки данных и вызова wp_reset_postdata() после цикла.

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

При создании шорткодов важно учитывать несколько моментов:

  • Валидация и экранирование: Все входные данные должны быть валидированы и экранированы. Используйте shortcode_atts для параметров и функции вроде esc_html, esc_url.
  • Возврат, а не вывод: Функция шорткода должна возвращать строку, а не выводить напрямую. Это даёт гибкость и предотвращает ошибки.
  • Производительность: Избегайте дорогостоящих запросов в цикле, кешируйте вывод при необходимости.

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

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

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

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

Как подключать шорткоды в шаблонах темы

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

echo do_shortcode('[wptool_hello name="Мир"]');

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

Создание шорткодов с поддержкой вложенного контента

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

function wptool_box_shortcode($atts, $content = null) {
    $atts = shortcode_atts(array(
        'title' => 'Заголовок'
    ), $atts, 'wptool_box');

    $output = '<div class="wptool-box">';
    $output .= '<h3>' . esc_html($atts['title']) . '</h3>';
    $output .= '<div class="content">' . do_shortcode($content) . '</div>';
    $output .= '</div>';

    return $output;
}
add_shortcode('wptool_box', 'wptool_box_shortcode');

Использование:

[wptool_box title="Важное сообщение"]Текст внутри блока[/wptool_box]

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

Автоматический импорт продуктов WooCommerce из CSV с примерами кода
04.02.2026
Как установить ограничение на число товаров в корзине WooCommerce
29.05.2026
Автоматическое удаление старого контента в WordPress по дате с примером кода
20.02.2026
Автоматическое изменение заголовков постов WordPress по шаблону
24.03.2026
Как автоматизировать управление ролями пользователей в WordPress с помощью кода
01.02.2026