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

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

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

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

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

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

Давайте перейдем к практике и создадим собственный шорткод.

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

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

function wpaddons_greeting_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'name' => 'Гость',
    ), $atts, 'wpaddons_greeting' );

    return 'Привет, ' . esc_html( $atts['name'] ) . '! Добро пожаловать на сайт.';
}
add_shortcode( 'wpaddons_greeting', 'wpaddons_greeting_shortcode' );

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

[wpaddons_greeting name="Алексей"]

Результат будет: "Привет, Алексей! Добро пожаловать на сайт."

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

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

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

function wpaddons_button_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'text' => 'Нажми меня',
        'url' => '#',
        'color' => '#0073aa'
    ), $atts, 'wpaddons_button' );

    return '<a href="' . esc_url( $atts['url'] ) . '" style="background-color:' . esc_attr( $atts['color'] ) . ';padding:10px 20px;color:#fff;text-decoration:none;border-radius:4px;">' . esc_html( $atts['text'] ) . '</a>';
}
add_shortcode( 'wpaddons_button', 'wpaddons_button_shortcode' );

Пример использования:

[wpaddons_button text="Перейти на сайт" url="https://wpaddons.ru" color="#d54e21"]

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

Шорткоды с вложенным контентом и условной логикой

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

Пример шорткода, делающего текст выделенным:

function wpaddons_highlight_shortcode( $atts, $content = null ) {
    return '<span style="background-color:yellow;">' . do_shortcode( $content ) . '</span>';
}
add_shortcode( 'wpaddons_highlight', 'wpaddons_highlight_shortcode' );

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

[wpaddons_highlight]Важный текст[/wpaddons_highlight]

Результат: текст будет выделен желтым фоном.

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

function wpaddons_auth_only_shortcode( $atts, $content = null ) {
    if ( is_user_logged_in() ) {
        return do_shortcode( $content );
    } else {
        return 'Пожалуйста, войдите в систему, чтобы увидеть этот контент.';
    }
}
add_shortcode( 'wpaddons_auth', 'wpaddons_auth_only_shortcode' );

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

[wpaddons_auth]Этот текст видят только авторизованные пользователи.[/wpaddons_auth]

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

При создании шорткодов важно избегать уязвимостей, таких как XSS-атаки. Для этого используйте функции esc_html(), esc_attr(), esc_url() для экранирования вывода.

Также не рекомендуется выполнять сложные запросы или тяжелые операции прямо в шорткодах, чтобы не замедлять загрузку страницы. Лучше кэшировать результаты или использовать AJAX, если надо подгружать данные динамически.

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

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

  • Галерея изображений с кастомным стилем: выводит изображения из произвольного поля или категории.
  • Вывод последних постов: динамически показывает последние записи с выбранной рубрикой.
  • Форма обратной связи: интеграция с Contact Form 7 или собственный простой формуляр.

Например, шорткод для вывода последних 3 постов определенной категории:

function wpaddons_recent_posts_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'category' => '',
        'count' => 3
    ), $atts, 'wpaddons_recent_posts' );

    $query = new WP_Query( array(
        'category_name' => sanitize_text_field( $atts['category'] ),
        'posts_per_page' => intval( $atts['count'] )
    ) );

    if ( ! $query->have_posts() ) return 'Посты не найдены.';

    $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( 'wpaddons_recent_posts', 'wpaddons_recent_posts_shortcode' );

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

[wpaddons_recent_posts category="novosti" count="5"]

Заключение по созданию шорткодов в WordPress

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

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

WooCommerce: автоматическое изменение стоимости товаров при изменении количества
14.05.2026
Автоматическое создание и удаление записей в WordPress по расписанию
30.03.2026
Как создать автоматический экспорт пользовательских данных в WordPress
06.04.2026
Как автоматически изменять метаданные для категорий в WordPress
02.04.2026
Автоматическое создание многоязычных пользовательских ролей в WordPress с примерами кода
17.02.2026