wpinc.ru wordpress WP Inc

Как создать динамический вывод данных в WordPress с помощью шорткода

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

Основы создания шорткода для динамического контента

Шорткод — это простой способ добавить в текстовую часть сайта произвольный функционал. В WordPress для создания шорткода используется функция add_shortcode(), которой передаётся уникальное имя и функция-обработчик, возвращающая HTML.

Главное — сделать шорткод максимально универсальным и безопасным, чтобы он мог принимать атрибуты и корректно обрабатывать данные.

Пример базового шорткода, который выводит текущее время:

function wpinc_current_time_shortcode($atts) {
    $atts = shortcode_atts(array(
        'format' => 'H:i:s',
    ), $atts, 'wpinc_current_time');

    return date($atts['format']);
}
add_shortcode('wpinc_current_time', 'wpinc_current_time_shortcode');

Вызов [wpinc_current_time format="d.m.Y H:i"] выведет время в указанном формате.

Динамический вывод данных из базы WordPress с фильтрацией

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

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

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

function wpinc_recent_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'category' => '',
        'posts_per_page' => 5,
        'order' => 'DESC',
    ), $atts, 'wpinc_recent_posts');

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

    if ($atts['category']) {
        $args['category_name'] = sanitize_text_field($atts['category']);
    }

    $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>';
    }
    $output .= '</ul>';

    wp_reset_postdata();
    return $output;
}
add_shortcode('wpinc_recent_posts', 'wpinc_recent_posts_shortcode');

Использование: [wpinc_recent_posts category="novosti" posts_per_page="3" order="ASC"]

Автоматизация вывода данных из пользовательских таблиц и плагинов

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

Пример — вывод списка отзывов из кастомной таблицы wpinc_reviews:

function wpinc_reviews_shortcode($atts) {
    global $wpdb;
    $atts = shortcode_atts(array(
        'limit' => 5,
    ), $atts, 'wpinc_reviews');

    $limit = intval($atts['limit']);
    $table = $wpdb->prefix . 'reviews';

    $results = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table ORDER BY created_at DESC LIMIT %d", $limit), ARRAY_A);

    if (empty($results)) {
        return '<p>Отзывы отсутствуют.</p>';
    }

    $output = '<div class="wpinc-reviews">';
    foreach ($results as $review) {
        $output .= '<blockquote><p>' . esc_html($review['text']) . '</p><footer>' . esc_html($review['author']) . '</footer></blockquote>';
    }
    $output .= '</div>';

    return $output;
}
add_shortcode('wpinc_reviews', 'wpinc_reviews_shortcode');

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

Использование плагина Clearfy Pro для расширения возможностей шорткодов

Плагин Clearfy Pro содержит модуль для управления шорткодами и оптимизации сайта. Он позволяет создавать шорткоды с визуальным редактором и расширенными параметрами, что упрощает разработку.

Например, с Clearfy Pro можно задать условия показа шорткода по ролям пользователей, устройствам или страницам без дополнительного кода.

Для подключения кастомного шорткода в Clearfy Pro можно использовать стандартную функцию add_shortcode, а затем управлять его выводом через настройки плагина.

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

При создании шорткодов важно следить за безопасностью — обязательно экранируйте вывод с помощью функций esc_html, esc_attr и подобных, чтобы избежать XSS-уязвимостей.

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

Пример добавления кеша в шорткод:

function wpinc_cached_shortcode($atts) {
    $cache_key = 'wpinc_cached_shortcode_output';
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }

    // Генерация контента
    $output = '<p>Динамический контент с кешированием</p>';

    set_transient($cache_key, $output, 3600); // Кеш на 1 час

    return $output;
}
add_shortcode('wpinc_cached', 'wpinc_cached_shortcode');

Заключение: применение динамических шорткодов в реальных проектах

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

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

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

×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙