Как создать свое 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
18.11.2025
Как исправить ошибку WooCommerce «Невозможно создать заказ» при смене способа оплаты
28.04.2026
Оценка производительности WordPress с помощью Query Monitor
02.04.2026
Как удалить неиспользуемые метаданные в WordPress для оптимизации базы данных
22.02.2026
Как добавить автоматическую удалённую оптимизацию базы данных WordPress
21.01.2026