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

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

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

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

Персонализированные шорткоды особенно полезны, если вы хотите повторно использовать определённые блоки контента или функционала, управлять выводом данных или реализовать интерактивные элементы.

Основы создания персонализированных шорткодов в WordPress

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

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

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

После добавления этого кода в файл functions.php вашей темы или в плагин, вы сможете использовать шорткод [wpg_hello] в любом месте контента, и он выведет приветственное сообщение.

Передача атрибутов в шорткод: как создавать гибкие решения

Одна из важных возможностей — передавать параметры в шорткод, чтобы менять его поведение. Атрибуты передаются внутри шорткода, например [wpg_hello name="Иван"].

Пример обработчика с параметрами:

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

Теперь при использовании [wpg_greeting name="Мария"] вы получите вывод "Привет, Мария!". Если атрибут не передан, будет использовано значение по умолчанию — "гость".

Сложные шорткоды с параметрами и динамическим контентом

Шорткоды могут выводить не только простой текст, но и сложный HTML, а также динамически получать данные из базы WordPress, например, список последних постов, пользовательские поля, результаты запросов.

Рассмотрим пример шорткода, который выводит последние 5 записей заданой категории:

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

    $query_args = array(
        'posts_per_page' => intval($atts['count']),
        'category_name' => sanitize_text_field($atts['category']),
        'post_status' => 'publish'
    );
    $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="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul>';

    return $output;
}
add_shortcode('wpg_latest_posts', 'wpgenerate_latest_posts_shortcode');

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

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

Иногда необходимо вывести содержимое шорткода не в контенте записи, а непосредственно в PHP-шаблонах темы или в виджетах. Для этого используется функция do_shortcode().

Пример использования в шаблоне:

echo do_shortcode('[wpg_hello]');

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

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

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

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

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

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

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

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

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

Итоговые рекомендации по созданию персонализированных шорткодов

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

Храните код шорткодов в отдельном плагине или в child-теме, чтобы при обновлении основной темы не потерять свои наработки.

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

Как создать автоматические отзывы в WordPress с плагином Expert Review
13.03.2026
WooCommerce: автоматическое удаление неактивных пользователей по дате последнего заказа
06.06.2026
Как автоматически изменять URL постов WordPress при изменении заголовка
04.01.2026
Как автоматизировать создание alt-текста для изображений в WordPress
10.02.2026
Как автоматически удалять спам из формы обратной связи WordPress
27.03.2026