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

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

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

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

Преимущества шорткодов:

  • Удобство использования для контент-менеджеров без знаний программирования.
  • Повторное использование кода в разных местах сайта.
  • Разделение логики и контента.

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

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

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

function wordpressy_custom_shortcode() {
    return '<div class="wordpressy-box">Это мой первый шорткод!</div>';
}
add_shortcode('wordpressy_box', 'wordpressy_custom_shortcode');

Теперь, если в редакторе WordPress вставить [wordpressy_box], на сайте отобразится див с текстом «Это мой первый шорткод!». Такой подход очень прост, но уже полезен.

Где размещать код шорткода

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

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

Очень часто нужно, чтобы шорткод работал с параметрами. Например, менял текст, цвет или другие настройки. Для этого функция шорткода принимает два параметра: атрибуты и содержимое.

Пример расширенного шорткода с параметрами:

function wordpressy_custom_shortcode_atts($atts, $content = null) {
    $atts = shortcode_atts( array(
        'color' => 'blue',
        'text' => 'Привет, WordPressy!'
    ), $atts, 'wordpressy_box' );

    return '<div style="color:' . esc_attr($atts['color']) . ';">' . esc_html($atts['text']) . '</div>';
}
add_shortcode('wordpressy_box', 'wordpressy_custom_shortcode_atts');

Теперь в редакторе вы можете использовать шорткод с параметрами:

[wordpressy_box color="red" text="Красный текст"]

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

Безопасность и экранирование данных

Важно всегда использовать функции esc_html и esc_attr для вывода данных, чтобы избежать XSS-уязвимостей и некорректного отображения.

Шорткод с вложенным контентом: как обрабатывать содержимое между тегами

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

Например:

[wordpressy_box]Содержимое шорткода[/wordpressy_box]

Чтобы обработать вложенный контент, функция шорткода принимает второй параметр:

function wordpressy_box_with_content($atts, $content = null) {
    $content = do_shortcode($content); // Обработка вложенных шорткодов
    return '<div class="wordpressy-box">' . wp_kses_post($content) . '</div>';
}
add_shortcode('wordpressy_box', 'wordpressy_box_with_content');

Теперь можно вставлять любой HTML или другие шорткоды внутрь [wordpressy_box].

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

1. Вывод последних записей с миниатюрой

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

function wordpressy_latest_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => 5
    ), $atts, 'wordpressy_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 class="wordpressy-latest-posts">';
    while ($query->have_posts()) {
        $query->the_post();
        $thumb = get_the_post_thumbnail(get_the_ID(), 'thumbnail');
        $output .= '<li>' . $thumb . ' <a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul>';
    return $output;
}
add_shortcode('wordpressy_latest_posts', 'wordpressy_latest_posts_shortcode');

Использование: [wordpressy_latest_posts count="3"]

2. Кнопка с кастомным стилем и ссылкой

Очень часто нужны красивые кнопки. Создадим шорткод с параметрами:

function wordpressy_button_shortcode($atts, $content = null) {
    $atts = shortcode_atts(array(
        'url' => '#',
        'color' => '#0085ba'
    ), $atts, 'wordpressy_button');

    $content = $content ? $content : 'Нажми меня';
    $url = esc_url($atts['url']);
    $color = esc_attr($atts['color']);

    return '<a href="' . $url . '" style="background-color:' . $color . '; color:#fff; padding:10px 20px; text-decoration:none; border-radius:3px; display:inline-block;">' . esc_html($content) . '</a>';
}
add_shortcode('wordpressy_button', 'wordpressy_button_shortcode');

Пример использования: [wordpressy_button url="https://wordpressy.ru" color="#e74c3c"]Перейти на WordPressy.ru[/wordpressy_button]

Рекомендации по созданию шорткодов на WordPressy.ru

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

  • Используйте уникальные префиксы (например, wordpressy_), чтобы избежать конфликтов с другими плагинами.
  • Всегда экранируйте вывод.
  • Пишите понятные и гибкие параметры.
  • Документируйте шорткоды, чтобы пользователи сайта знали, как их применять.
  • При необходимости добавляйте поддержку вложенных шорткодов через do_shortcode.

Так вы создадите удобный и мощный инструмент, который упростит управление контентом и расширит функционал сайта.

Как использовать REST API для создания кастомных эндпоинтов в WordPress
10.12.2025
Автоматическое отслеживание изменений остатков товаров в WooCommerce
04.05.2026
Автообновление плагинов в WordPress: безопасный подход с WordPressy
18.11.2025
Как найти и исправить дублирующиеся SKU в WooCommerce
18.04.2026
Как удалить неиспользуемые метаполя в WooCommerce и ускорить сайт
20.05.2026