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

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

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

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

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

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

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

function wp_pro_shortcode_example($atts, $content = null) {
    return '<div class="wp-pro-shortcode">Привет, это мой первый шорткод!</div>';
}
add_shortcode('wp_pro_greeting', 'wp_pro_shortcode_example');

В этом примере мы создали шорткод [wp_pro_greeting], который выводит простой блок с текстом. Функция-обработчик принимает атрибуты и содержимое между тегами шорткода.

Разбор параметров функции обработчика

Первый параметр $atts — это массив атрибутов, переданных в шорткод, например [wp_pro_greeting user="Вася"]. Второй параметр $content — это содержимое между открывающим и закрывающим тегами шорткода, если он парный.

Как использовать атрибуты в шорткодах для гибкой настройки

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

function wp_pro_shortcode_greeting($atts) {
    $atts = shortcode_atts(
        array(
            'user' => 'Гость',
            'color' => 'black'
        ), $atts, 'wp_pro_greeting'
    );

    return '<div style="color: '.esc_attr($atts['color']).'">Привет, '.esc_html($atts['user']).'!</div>';
}
add_shortcode('wp_pro_greeting', 'wp_pro_shortcode_greeting');

Теперь можно вызывать шорткод так: [wp_pro_greeting user="Ирина" color="red"], и он выведет красный приветственный текст с именем пользователя.

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

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

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

    $args = array(
        'posts_per_page' => intval($atts['count']),
        'category_name' => sanitize_text_field($atts['category'])
    );

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

    $output = '<ul class="wp-pro-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('wp_pro_latest_posts', 'wp_pro_shortcode_latest_posts');

Этот шорткод можно использовать так: [wp_pro_latest_posts category="novosti" count="3"]. Он выведет список из трех последних записей категории "новости".

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

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

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

Однако собственный код всегда более гибкий и не нагружает сайт лишними функциями.

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

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

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

Как подключить шорткод в шаблонах темы

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

echo do_shortcode('[wp_pro_greeting user="Алексей" color="green"]');

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

Как создать многоязычный сайт на WordPress без проблем с производительностью
28.01.2026
Оптимизация базы данных WordPress: лучшие практики и решения
24.11.2025
Как избежать конфликтов между плагинами в WordPress: практические советы и решения
21.12.2025
Как использовать хуки в WordPress для расширения функциональности
06.11.2025
Как автоматизировать создание резервной копии WordPress
03.12.2025