Создать собственный shortcode WordPress: подробное руководство

Shortcode — это удобный способ добавить динамический контент в записи и страницы WordPress без необходимости писать сложный код каждый раз. Они выглядят как короткие метки в квадратных скобках, например [gallery], и WordPress автоматически заменяет их на нужный HTML или другой вывод. В этой статье мы подробно разберем, как создать собственный shortcode в WordPress, чтобы расширить функциональность вашего сайта на wpcontent.ru.

Что такое shortcode в WordPress и зачем их создавать

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

Создавая собственные shortcode, вы можете внедрять уникальные элементы, например, формы, слайдеры, кастомные списки, кнопки вызова и многое другое. Это повышает удобство работы с контентом и позволяет стандартизировать вывод.

Преимущества собственных shortcode:

  • Повторное использование одного кода в разных местах.
  • Удобство для контент-менеджеров, которые не знают PHP.
  • Гибкость и расширяемость функционала сайта.

Как создать собственный shortcode WordPress: базовый пример

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

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

function wpcontent_current_year_shortcode() {
    return date('Y');
}
add_shortcode('current_year', 'wpcontent_current_year_shortcode');

Теперь в любом месте записи или страницы вы можете написать [current_year], и он автоматически заменится на текущий год, например, 2024.

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

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

Пример: создадим shortcode, который выводит кнопку с настраиваемым текстом и ссылкой:

function wpcontent_button_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'text' => 'Нажми меня',
            'url' => '#'
        ), $atts, 'wp_button'
    );

    return '<a href="' . esc_url($atts['url']) . '" class="wpcontent-button">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('wp_button', 'wpcontent_button_shortcode');

Использование: [wp_button text="Перейти" url="https://wpcontent.ru"]

Этот код создаст ссылку-кнопку с заданным текстом и адресом. Также не забудьте добавить CSS для класса wpcontent-button в вашей теме для стилизации.

Создание сложных shortcode с HTML и логикой

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

Например, сделаем shortcode, который выводит список последних 5 публикаций с ссылками:

function wpcontent_latest_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => 5
    ), $atts, '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 class="wpcontent-latest-posts">';
    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('latest_posts', 'wpcontent_latest_posts_shortcode');

Использование: [latest_posts count="3"] выведет 3 последних поста с ссылками.

Оптимизация и безопасность shortcode

При создании shortcode важно:

  • Использовать esc_html(), esc_url() и другие функции экранирования для защиты от XSS.
  • Не использовать напрямую echo — shortcode должны возвращать строку.
  • При работе с пользовательским вводом применять фильтры и валидацию.
  • По возможности использовать shortcode_atts() для установки значений по умолчанию.

Подключение стилей и скриптов для shortcode

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

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

Пример подключения стилей для shortcode кнопки:

function wpcontent_enqueue_shortcode_assets() {
    if (is_singular() && has_shortcode(get_post()->post_content, 'wp_button')) {
        wp_enqueue_style('wpcontent-button-style', get_template_directory_uri() . '/css/wpcontent-button.css');
    }
}
add_action('wp_enqueue_scripts', 'wpcontent_enqueue_shortcode_assets');

Создание плагина с shortcode

Для удобства и переиспользуемости лучше создавать shortcode в виде отдельного плагина. Создайте папку и файл, например wpcontent-shortcodes/wpcontent-shortcodes.php с заголовком плагина и добавьте туда код ваших shortcode. Это позволит управлять ими независимо от темы.

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

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

  • Вставка контактной формы с возможностью настройки полей.
  • Галерея изображений с кастомным выводом.
  • Табы или аккордеон для структурирования длинного текста.
  • Вывод пользовательской информации, например, имени текущего пользователя.

Реализация каждого из них потребует своей логики, но принцип создания остается тем же — функция-обработчик и регистрация через add_shortcode.

Пример: shortcode с аккордеоном

Ниже простой пример вывода аккордеона с помощью HTML и CSS внутри shortcode:

function wpcontent_accordion_shortcode($atts, $content = null) {
    return '<div class="wpcontent-accordion"><h3 class="title">'. esc_html($atts['title']) .'</h3><div class="content">' . do_shortcode($content) . '</div></div>';
}
add_shortcode('accordion', 'wpcontent_accordion_shortcode');

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

[accordion title="Заголовок"]Текст внутри аккордеона[/accordion]

Затем добавьте стили и JavaScript для открытия/закрытия аккордеона в вашем CSS/JS файлах.

Как избежать проблем с отображением корзины в WooCommerce при использовании кэширования
22.04.2026
Автоматическое удаление заброшенных корзин в WooCommerce по расписанию без плагинов
05.06.2026
Как изменить пути к медиаданным в WordPress без потери функциональности
28.02.2026
Удаление и блокировка вредоносных комментариев в WordPress
20.03.2026
Как использовать фильтр wp_content для изменения пути медиафайлов в WordPress
29.01.2026