Как создать и подключить собственный шорткод в WordPress

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

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

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

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

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

Подключение кастомного шорткода в functions.php темы

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

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

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

Здесь мы создали функцию wpzen_greeting_shortcode, которая принимает параметры шорткода, подставляет значение атрибута name и возвращает HTML с приветствием. Затем регистрируем шорткод с помощью add_shortcode, где wpzen_greeting — это название шорткода.

Использовать шорткод очень просто — вставьте в запись или страницу:

[wpzen_greeting name="Алексей"]
<

В результате на сайте вы увидите:

Привет, Алексей! Добро пожаловать на сайт.

Расширение шорткода: добавляем параметры и логику

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

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

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

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

    $query = new WP_Query($args);

    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('wpzen_latest_posts', 'wpzen_latest_posts_shortcode');

Теперь можно вставлять шорткод с параметрами, например:

[wpzen_latest_posts category="novosti" count="3"]
<

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

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

Хотя создание собственных шорткодов очень полезно, иногда проще использовать готовые решения или расширения. Вот несколько плагинов, которые помогут эффективно работать с шорткодами:

  • Shortcoder — позволяет создавать шорткоды с любым HTML, JavaScript или PHP кодом через админку без правки файлов.
  • Shortcodes Ultimate — большой набор готовых шорткодов с визуальным редактором.
  • Insert PHP Code Snippet — позволяет создавать шорткоды на базе PHP-кода, которые можно быстро вставлять в контент.

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

Советы по безопасности и производительности при создании шорткодов

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

  • Используйте функции esc_html(), sanitize_text_field() и подобные для очистки входящих данных.
  • Избегайте прямого вывода пользовательского ввода без фильтрации.
  • Не вставляйте опасный PHP-код через шорткоды без проверки, чтобы не создавать уязвимости.

По производительности:

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

Пример реализации кэширования в шорткоде wpzen_latest_posts

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

    $cache_key = 'wpzen_latest_posts_' . md5(serialize($atts));
    $output = get_transient($cache_key);

    if ($output !== false) {
        return $output;
    }

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

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

    $query = new WP_Query($args);

    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, 12 * HOUR_IN_SECONDS);

    return $output;
}

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

Выводы по созданию и использованию собственных шорткодов

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

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

Как установить и настроить Redis кэш в WordPress для ускорения сайта
25.11.2025
Как создать автоматические уведомления в WordPress с помощью WPRemark
08.04.2026
Как создать автоматический импорт постов в WordPress с помощью WPZen
22.02.2026
Автоматический импорт данных из Google Sheets в WordPress: практическое руководство
05.04.2026
WooCommerce: автоматическое обновление статусов заказов через вебхуки
15.05.2026