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

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

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

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

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

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

Регистрация собственного шорткода в WordPress

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

Пример базового шорткода, который выводит приветствие:

function wpbono_hello_shortcode() {
    return '<p>Привет, это мой первый шорткод!</p>';
}
add_shortcode('wpbono_hello', 'wpbono_hello_shortcode');

Вставив в текст записи [wpbono_hello], вы увидите на сайте строку «Привет, это мой первый шорткод!».

Подключение шорткода к теме или плагину

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

Шорткод с параметрами: как передавать и обрабатывать атрибуты

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

Пример шорткода с параметрами:

function wpbono_button_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'text' => 'Кнопка',
            'url' => '#',
            'color' => 'blue'
        ), $atts, 'wpbono_button'
    );

    return '<a href="' . esc_url($atts['url']) . '" style="background-color:' . esc_attr($atts['color']) . '; padding:10px 20px; color:#fff; text-decoration:none; border-radius:5px;">' . esc_html($atts['text']) . '</a>';
}
add_shortcode('wpbono_button', 'wpbono_button_shortcode');

Использование в записи: [wpbono_button text="Перейти" url="https://wpbono.ru" color="#f04"]. Такой шорткод выведет стилизованную кнопку с указанным текстом, ссылкой и цветом.

Обработка и защита данных в шорткодах

Важно всегда использовать функции esc_html(), esc_url() и esc_attr() для экранирования вывода, чтобы избежать XSS-уязвимостей и корректно отображать данные.

Шорткод с вложенным контентом: использование параметра $content

Шорткод может принимать не только атрибуты, но и содержимое между открывающим и закрывающим тегами, например: [wpbono_box]Текст внутри блока[/wpbono_box].

Пример реализации:

function wpbono_box_shortcode($atts, $content = null) {
    return '<div style="border:1px solid #ccc; padding:10px; background:#f9f9f9;">' . do_shortcode($content) . '</div>';
}
add_shortcode('wpbono_box', 'wpbono_box_shortcode');

Такой шорткод оборачивает вложенное содержимое в стилизованный блок. Важно использовать do_shortcode() для обработки возможных вложенных шорткодов внутри контента.

Практические примеры: шорткод для вывода последних статей

Рассмотрим пример создания шорткода, который выведет последние 5 записей с ссылками и датами публикации.

function wpbono_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'count' => 5
    ), $atts, 'wpbono_recent_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> (' . get_the_date() . ')</li>';
    }
    wp_reset_postdata();
    $output .= '</ul>';

    return $output;
}
add_shortcode('wpbono_recent_posts', 'wpbono_recent_posts_shortcode');

Использование: [wpbono_recent_posts count="3"] выведет 3 последних записи. Этот шорткод можно использовать в любых частях сайта, где поддерживаются шорткоды.

Советы по отладке и оптимизации шорткодов

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

  • Проверять корректность параметров и использовать shortcode_atts() для установки значений по умолчанию.
  • Минимизировать запросы к базе данных внутри шорткода, чтобы не снижать производительность.
  • Использовать кэширование результатов, если шорткод выводит сложный или ресурсоёмкий контент.
  • Тестировать шорткоды на совместимость с разными темами и плагинами.

Если шорткод не работает, проверьте, подключён ли ваш код, и нет ли конфликтов с другими функциями.

Выводы и рекомендации

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

Не забывайте о безопасности и производительности, и ваши шорткоды будут работать надёжно и эффективно.

WooCommerce: как настроить отправку уведомлений о заказах в Telegram
30.04.2026
WooCommerce: как исключить товары со скидкой из способов оплаты
30.04.2026
WooCommerce: как запретить повторное создание заказа при наличии активного
03.06.2026
Как использовать AJAX в WordPress для объявлений без перезагрузки страницы
03.02.2026
Как использовать WPCommunity для создания внутренней социальной сети на WordPress
30.03.2026