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

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

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

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

  • Добавлять интерактивные элементы в записи и страницы без знаний HTML и PHP;
  • Повторно использовать один и тот же блок кода в разных местах сайта;
  • Сокращать время разработки и облегчать поддержку сайта.

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

Как зарегистрировать шорткод в WordPress

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

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

Теперь в редакторе WordPress вы можете написать [wpnews_greeting], и на сайте отобразится приветственное сообщение.

Объяснение кода регистрации шорткода

Функция wpnews_simple_greeting_shortcode возвращает HTML-строку, которая и будет отображена на месте шорткода. При регистрации через add_shortcode() первым параметром указывается имя шорткода, вторым — функция, которая генерирует контент.

Использование атрибутов в шорткодах

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

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

Теперь в редакторе можно написать [wpnews_personal_greeting name="Алексей"], и вы увидите на сайте: "Привет, Алексей!".

Пояснения по работе с атрибутами

Функция shortcode_atts() задаёт значения по умолчанию и объединяет их с переданными пользователем. Это удобно для обработки опциональных параметров.

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

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

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

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

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

    $query = new WP_Query($query_args);
    if (!$query->have_posts()) {
        return '<p>Записей не найдено.</p>';
    }

    $output = '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        $output .= '<li><a href="' . esc_url(get_permalink()) . '">' . esc_html(get_the_title()) . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul>';

    return $output;
}
add_shortcode('wpnews_latest_posts', 'wpnews_latest_posts_shortcode');

Используйте в записи [wpnews_latest_posts count="3" category="novosti"] для вывода трёх последних постов из категории "novosti".

Подробности реализации

Мы создаём объект WP_Query с параметрами, которые задаются через атрибуты шорткода. Это позволяет гибко настраивать вывод. В цикле формируем HTML-список с ссылками на записи.

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

При создании шорткодов важно соблюдать несколько правил для устойчивости и безопасности:

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

Так ваш шорткод не только будет работать корректно, но и не создаст угроз безопасности для сайта.

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

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

  • Shortcodes Ultimate — большой набор готовых шорткодов для кнопок, табов, слайдеров и пр.;
  • WP Shortcode by MyThemeShop — простой плагин с набором базовых шорткодов для форматирования контента;
  • Custom Shortcodes — позволяет создавать собственные шорткоды через админку без программирования.

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

Заключение: советы для разработчиков шорткодов

Создание шорткодов — это один из основных способов расширить возможности WordPress без изменения кода темы. Важно:

  • Писать чистый, читаемый и безопасный код;
  • Документировать свои функции и использовать префиксы (например, wpnews_) для избежания конфликтов;
  • Тестировать шорткоды на разных страницах и с разными параметрами;
  • Поддерживать и обновлять код по мере необходимости.

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

Как использовать REST API в WordPress для создания настраиваемых приложений
08.11.2025
Как создать свой шорткод в WordPress: практическое руководство
03.11.2025
Как использовать Hooks в WordPress для расширения функциональности
12.11.2025