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

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

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

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

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

  • Удобство для контент-менеджеров — вставляют готовый элемент одним словом;
  • Повторное использование кода без дублирования;
  • Лёгкое обновление функционала — достаточно изменить функцию, и все шорткоды обновятся;
  • Возможность передачи параметров для настройки вывода.

Теперь перейдём к практике — создадим собственный shortcode с нуля.

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

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

function wpnote_hello_shortcode($atts) {
    $atts = shortcode_atts( array(
        'name' => 'гость',
    ), $atts, 'hello' );

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

Объяснение:

  • Функция wpnote_hello_shortcode принимает атрибуты из шорткода и устанавливает значение по умолчанию для параметра name;
  • Используем esc_html() для безопасности вывода;
  • Функция возвращает HTML с приветствием;
  • Через add_shortcode связываем тег [hello] с функцией.

Теперь в редакторе WordPress, вставив [hello], вы получите текст "Привет, гость!". Если хотите персонализировать, используйте [hello name="Артём"].

Шорткод с параметрами и сложной логикой

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

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

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

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

    $posts = get_posts($args);

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

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

    return $output;
}
add_shortcode('recent_posts', 'wpnote_recent_posts_shortcode');

Как использовать:

  • [recent_posts count=3 category="novosti"] — выведет 3 последних поста из категории «новости»;
  • [recent_posts] — выведет 5 последних постов из всех категорий (по умолчанию);

Этот пример показывает, как использовать параметры для настройки результата и работать с базовыми WP функциями get_posts и get_permalink.

Как зарегистрировать шорткод в плагине и в functions.php

Шорткод можно добавить в файл functions.php темы или создать отдельный плагин. Рекомендуется использовать плагин, чтобы не потерять код при смене темы.

Пример базового плагина wpnote-shortcodes.php:

<?php
/**
 * Plugin Name: WPNote Shortcodes
 * Description: Набор пользовательских шорткодов для сайта WPNote.ru
 * Version: 1.0
 * Author: WPNote
 */

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

// Другие шорткоды здесь

Просто загрузите этот файл в папку wp-content/plugins и активируйте в админке.

Как защитить и оптимизировать шорткоды

При создании шорткодов важно:

  • Использовать функции экранирования вывода (esc_html, esc_attr и т.п.) во избежание XSS-уязвимостей;
  • Минимизировать запросы к базе — кешировать результаты при необходимости;
  • Не использовать echo внутри функции шорткода, а возвращать строку;
  • Обрабатывать неверные и отсутствующие параметры;
  • Документировать шорткод, чтобы было понятно, как его использовать.

Пример кеширования результата шорткода

function wpnote_cached_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(array('count' => 5), $atts, 'cached_recent_posts');
    $cache_key = 'wpnote_recent_posts_' . intval($atts['count']);
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }

    $posts = get_posts(array('posts_per_page' => intval($atts['count']), 'post_status' => 'publish'));
    if (empty($posts)) {
        return '<p>Записей не найдено.</p>';
    }

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

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

    return $output;
}
add_shortcode('cached_recent_posts', 'wpnote_cached_recent_posts_shortcode');

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

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

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

  • Shortcodes Ultimate — набор из 50+ готовых шорткодов, легко настраиваемых через визуальный интерфейс;
  • WP Shortcode by MyThemeShop — удобный и лёгкий плагин с базовыми элементами;
  • Custom Content Shortcode — плагин для создания простых пользовательских шорткодов без кода;
  • Shortcoder — позволяет создавать шорткоды из любого HTML, JavaScript или PHP кода.

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

Выводы и рекомендации по созданию шорткодов

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

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

Как установить и настроить WooCommerce на WordPress
14.11.2025
Как удалить все комментарии из базы WordPress с помощью кода
20.01.2026
Автоматические подписки на платежи в WooCommerce с помощью WPRemark
08.02.2026
Как использовать хуки в WordPress для расширения функциональности
17.11.2025
Как безопасно удалить неиспользуемые таблицы из базы данных WordPress
29.12.2025