Как создать shortcode в WordPress для вывода данных

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

Что такое shortcode и зачем он нужен в WordPress

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

Использование shortcode упрощает работу редакторов и контент-менеджеров, а также помогает разработчикам централизованно управлять выводом данных. При этом shortcode можно использовать многократно и с параметрами для гибкой настройки.

Давайте рассмотрим, как создать такой shortcode на примере вывода списка последних записей из определённой категории.

Создание простого shortcode для вывода последних записей

Начнём с базового примера. В файле плагина или темы добавим следующий код:

function wpdo_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'category' => '',
            'posts_per_page' => 5,
        ), $atts, 'wpdo_recent_posts'
    );

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

    $query = new WP_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('wpdo_recent_posts', 'wpdo_recent_posts_shortcode');

Этот shortcode принимает два параметра: category — слаг категории, и posts_per_page — количество записей для вывода. Вызов в редакторе будет выглядеть так:

[wpdo_recent_posts category="novosti" posts_per_page="3"]

В результате на странице вы увидите упрощённый список из трёх последних записей категории «новости».

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

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

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

Расширение функционала: добавление параметра сортировки

Чтобы сделать shortcode более универсальным, добавим возможность указывать порядок сортировки записей — по дате или по заголовку:

function wpdo_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(
        array(
            'category' => '',
            'posts_per_page' => 5,
            'orderby' => 'date', // date или title
            'order' => 'DESC', // ASC или DESC
        ), $atts, 'wpdo_recent_posts'
    );

    $allowed_orderby = array('date', 'title');
    $allowed_order = array('ASC', 'DESC');

    $orderby = in_array($atts['orderby'], $allowed_orderby) ? $atts['orderby'] : 'date';
    $order = in_array(strtoupper($atts['order']), $allowed_order) ? strtoupper($atts['order']) : 'DESC';

    $args = array(
        'posts_per_page' => intval($atts['posts_per_page']),
        'category_name' => sanitize_text_field($atts['category']),
        'post_status' => 'publish',
        'orderby' => $orderby,
        'order' => $order,
    );

    $query = new WP_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('wpdo_recent_posts', 'wpdo_recent_posts_shortcode');

Пример использования с сортировкой по заголовку по возрастанию:

[wpdo_recent_posts category="blog" posts_per_page="10" orderby="title" order="ASC"]

Примеры популярных плагинов с shortcode и когда их использовать

Для расширения функционала вывода данных можно использовать готовые плагины с shortcode. Рассмотрим несколько популярных:

  • Contact Form 7 — позволяет вставлять формы обратной связи через shortcode [contact-form-7 id="123" title="Форма обратной связи"]. Отлично подходит для быстрого добавления форм.
  • WooCommerce — предоставляет множество shortcode для вывода товаров, категорий, корзины и оформления заказа. Например, [products limit="4" columns="4"] выведет товары на страницу.
  • TablePress — удобный плагин для создания таблиц с выводом через shortcode [table id=1 /]. Позволяет легко управлять табличными данными без кода.

Использование плагинов с shortcode помогает значительно сократить время разработки и повысить гибкость контента.

Отладка и тестирование shortcode на сайте

Чтобы убедиться, что shortcode работает корректно, нужно проверить несколько моментов:

  • Выводится ли контент там, где ожидается.
  • Правильность параметров и их обработка.
  • Отсутствие ошибок PHP и предупреждений.
  • Корректное отображение на разных устройствах.

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

Если shortcode возвращает пустой результат, проверьте параметры, а также подключение, например, что хук add_shortcode вызывается в нужном месте — лучше всего в функции инициализации плагина или темы.

Итог: как использовать shortcode для динамического вывода данных на wpdo.ru

Shortcode — универсальный и мощный инструмент для вывода динамического контента в WordPress. Создавая собственные shortcode с использованием префикса wpdo, вы сможете легко добавлять на сайт списки записей, формы, таблицы и многое другое.

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

WooCommerce: как использовать хуки для изменения функциональности оформления заказа
20.06.2026
Как установить и настроить WPRemark для массового управления комментариями в WordPress
08.01.2026
Как сделать кэширование в WordPress с помощью плагинов
05.11.2025
WooCommerce: как убрать обязательное поле телефона при оформлении заказа
20.05.2026
Как автоматически удалять старые черные списки комментариев в WordPress
31.03.2026