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

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

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

Например, вместо длинного кода для вставки галереи или формы можно использовать [gallery] или [contact-form]. Создание собственных shortcode позволяет разработчикам расширить функциональность сайта и сделать контент максимально гибким.

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

Как зарегистрировать shortcode в WordPress

Для создания shortcode нужно использовать функцию add_shortcode(). Она принимает два параметра: имя shortcode и callback-функцию, которая возвращает HTML-код или другой вывод.

Пример простой функции для shortcode:

function wpto_simple_shortcode() {
    return '<p>Это простой шорткод от WPTO!</p>';
}
add_shortcode('wpto_simple', 'wpto_simple_shortcode');

Теперь в редакторе можно вставить [wpto_simple], и он выведет указанный HTML. Обратите внимание, что функция должна возвращать, а не выводить текст — это важно для корректной работы.

Передача параметров в shortcode

Shortcode поддерживают атрибуты, которые передаются в callback-функцию в виде массива. Это позволяет делать шорткоды универсальными и настраиваемыми.

Пример с параметрами:

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

Использование: [wpto_greeting name="Иван"] выведет «Привет, Иван!». Если параметр не указан, выведется «Привет, Гость!».

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

1. Список последних записей

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

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

    return $output;
}
add_shortcode('wpto_latest_posts', 'wpto_latest_posts_shortcode');

Используйте [wpto_latest_posts count="3"] чтобы вывести последние 3 записи.

2. Вывод текущей даты с форматированием

Иногда нужно вставить в текст динамическую дату — это очень просто сделать с помощью шорткода.

function wpto_current_date_shortcode($atts) {
    $atts = shortcode_atts(array(
        'format' => 'd.m.Y'
    ), $atts, 'wpto_current_date');

    return date_i18n($atts['format']);
}
add_shortcode('wpto_current_date', 'wpto_current_date_shortcode');

Пример использования: [wpto_current_date format="j F Y"] выведет дату, например, «12 июня 2024».

Особенности безопасности и производительности при создании shortcode

При работе с shortcode важно помнить о безопасности:

  • Всегда экранируйте входящие данные — используйте esc_html(), esc_attr(), esc_url() и другие функции WordPress.
  • Не выводите необработанный HTML, чтобы избежать XSS-уязвимостей.
  • Избегайте тяжелых запросов в callback-функциях, чтобы не замедлять загрузку страниц.

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

Пример добавления кэширования в shortcode

function wpto_cached_latest_posts_shortcode($atts) {
    $atts = shortcode_atts(array('count' => 5), $atts, 'wpto_cached_latest_posts');
    $cache_key = 'wpto_latest_posts_' . intval($atts['count']);
    $output = get_transient($cache_key);

    if (false === $output) {
        $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="' . get_permalink() . '">' . get_the_title() . '</a></li>';
        }
        wp_reset_postdata();
        $output .= '</ul>';
        set_transient($cache_key, $output, 3600); // кэш на 1 час
    }
    return $output;
}
add_shortcode('wpto_cached_latest_posts', 'wpto_cached_latest_posts_shortcode');

Этот подход значительно уменьшит нагрузку при частом вызове шорткода.

Полезные плагины для работы с shortcode в WordPress

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

  • Shortcodes Ultimate — набор готовых шорткодов для кнопок, вкладок, галерей и многого другого.
  • WP Shortcode — простой плагин с базовыми шорткодами для форматирования контента.
  • Custom Content Shortcode — позволяет создавать сложные условные шорткоды с логикой.

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

Как удалить неиспользуемые таблицы из базы данных WordPress
08.12.2025
Как установить и настроить php.ini для WordPress на VPS
22.03.2026
Как использовать WooCommerce REST API для массового изменения товаров
18.06.2026
Как использовать хук woocommerce_checkout_update_order_meta для добавления данных к заказу
02.05.2026
Как использовать WooCommerce REST API для массового управления заказами
23.06.2026