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

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

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

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

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

  • Упрощают добавление повторяющегося контента.
  • Позволяют избежать ручного копирования сложного HTML или PHP-кода.
  • Облегчают управление функционалом для контент-менеджеров без навыков программирования.

Рассмотрим создание собственного шорткода на конкретном примере.

Создание простого шорткода WPAll: вывод текущей даты

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

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

function wpall_current_date_shortcode() {
    return date('d.m.Y');
}
add_shortcode('wpall_date', 'wpall_current_date_shortcode');

Теперь в любом месте записи или страницы, где вы вставите [wpall_date], появится текущая дата в формате ДД.ММ.ГГГГ.

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

Шорткод с параметрами: пример с выводом пользовательского приветствия

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

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

    return 'Привет, ' . esc_html($attributes['name']) . '! Добро пожаловать на WPAll.';
}
add_shortcode('wpall_greeting', 'wpall_greeting_shortcode');

Теперь вызов [wpall_greeting name="Алексей"] выведет «Привет, Алексей! Добро пожаловать на WPAll.»

Если параметр name не передан, будет использоваться значение по умолчанию — «Гость».

Динамический шорткод с выводом последних записей

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

function wpall_latest_posts_shortcode($atts) {
    $attributes = shortcode_atts(array(
        'count' => 5,
        'category' => '',
    ), $atts);

    $args = array(
        'posts_per_page' => intval($attributes['count']),
        'post_status' => 'publish',
    );

    if (!empty($attributes['category'])) {
        $args['category_name'] = sanitize_text_field($attributes['category']);
    }

    $posts = get_posts($args);

    if (empty($posts)) {
        return '<p>Записи не найдены.</p>';
    }

    $output = '<ul>';
    foreach ($posts as $post) {
        $output .= '<li><a href="' . esc_url(get_permalink($post)) . '">' . esc_html(get_the_title($post)) . '</a></li>';
    }
    $output .= '</ul>';

    return $output;
}
add_shortcode('wpall_latest_posts', 'wpall_latest_posts_shortcode');

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

  • [wpall_latest_posts] — выведет 5 последних записей.
  • [wpall_latest_posts count="3"] — последние 3 записи.
  • [wpall_latest_posts category="news"] — последние 5 записей из категории «news».

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

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

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

Рассмотрим два популярных плагина:

1. Shortcodes Ultimate

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

Плюсы:

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

2. WP Shortcode by MyThemeShop

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

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

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

Советы:

  • Обязательно используйте функции esc_html(), esc_url() и другие для экранирования данных.
  • Проверяйте входящие параметры с помощью shortcode_atts() и функций валидации.
  • Минимизируйте нагрузку — избегайте сложных запросов в цикле, кэшируйте результаты при необходимости.

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

function wpall_latest_posts_shortcode_cached($atts) {
    $attributes = shortcode_atts(array(
        'count' => 5,
        'category' => '',
    ), $atts);

    $cache_key = 'wpall_latest_posts_' . md5(serialize($attributes));
    $output = get_transient($cache_key);
    if ($output !== false) {
        return $output;
    }

    $args = array(
        'posts_per_page' => intval($attributes['count']),
        'post_status' => 'publish',
    );

    if (!empty($attributes['category'])) {
        $args['category_name'] = sanitize_text_field($attributes['category']);
    }

    $posts = get_posts($args);

    if (empty($posts)) {
        return '<p>Записи не найдены.</p>';
    }

    $output = '<ul>';
    foreach ($posts as $post) {
        $output .= '<li><a href="' . esc_url(get_permalink($post)) . '">' . esc_html(get_the_title($post)) . '</a></li>';
    }
    $output .= '</ul>';

    set_transient($cache_key, $output, 3600); // Кэш на 1 час

    return $output;
}
remove_shortcode('wpall_latest_posts');
add_shortcode('wpall_latest_posts', 'wpall_latest_posts_shortcode_cached');

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

Итоги: как WPAll поможет создавать свои шорткоды

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

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

WordPress авторизация по одноразовому паролю (OTP) с практическим применением
30.01.2026
Автоматическое удаление старых записей и ревизий в WordPress через WP-Cron
12.01.2026
Как удалить или заблокировать неиспользуемые плагины в WordPress
25.11.2025
Как создать свой шорткод в WordPress
01.11.2025
Как использовать REST API для создания собственных функций в WordPress
08.11.2025