Создать и использовать шорткод для вывода продуктов WPShop в WordPress

|

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

Что такое шорткод и зачем он нужен для WPShop

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

Хотя WPShop уже имеет встроенные шорткоды, создание собственного расширенного шорткода даёт больше контроля над выводом, позволяет кастомизировать HTML-разметку и логику отображения.

Как создать кастомный шорткод для вывода продуктов WPShop

Начнём с простого примера шорткода, который выводит список товаров с определённой категории. Предположим, что WPShop хранит товары в кастомном типе записей wpshop_product, а категории — в таксономии wpshop_category.

Регистрация шорткода

Код добавляем в файл functions.php вашей темы либо в отдельный плагин:

function wpzoom_wpshop_products_shortcode($atts) {
    // Атрибуты шорткода и их значения по умолчанию
    $atts = shortcode_atts(array(
        'category' => '', // слаг категории
        'limit' => 5,     // количество товаров
    ), $atts, 'wpshop_products');

    // Аргументы запроса
    $args = array(
        'post_type' => 'wpshop_product',
        'posts_per_page' => intval($atts['limit']),
        'post_status' => 'publish',
    );

    // Если указана категория, добавляем таксономический фильтр
    if (!empty($atts['category'])) {
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'wpshop_category',
                'field' => 'slug',
                'terms' => sanitize_text_field($atts['category']),
            ),
        );
    }

    $query = new WP_Query($args);

    if (!$query->have_posts()) {
        return '<p>Товары не найдены.</p>';
    }

    $output = '<div class="wpshop-products-list">';

    while ($query->have_posts()) {
        $query->the_post();
        $product_id = get_the_ID();
        $title = get_the_title();
        $permalink = get_permalink();
        $price = get_post_meta($product_id, '_wpshop_price', true); // предположим, цена хранится в мета

        $output .= '<div class="wpshop-product-item">';
        $output .= '<a href="'.esc_url($permalink).'">'.esc_html($title).'</a>';
        $output .= '<span class="price">'.esc_html($price).'</span>';
        $output .= '</div>';
    }

    wp_reset_postdata();

    $output .= '</div>';
    return $output;
}
add_shortcode('wpshop_products', 'wpzoom_wpshop_products_shortcode');

Теперь можно вставлять шорткод в записи или страницы, например:

[wpshop_products category="electronics" limit="10"]

Он выведет 10 товаров из категории с слагом electronics.

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

Чтобы сделать шорткод более гибким, добавим параметр сортировки по цене или дате добавления:

function wpzoom_wpshop_products_shortcode($atts) {
    $atts = shortcode_atts(array(
        'category' => '',
        'limit' => 5,
        'orderby' => 'date',
        'order' => 'DESC',
    ), $atts, 'wpshop_products');

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

    if (!empty($atts['category'])) {
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'wpshop_category',
                'field' => 'slug',
                'terms' => sanitize_text_field($atts['category']),
            ),
        );
    }

    // Если сортировка по цене, используем мета-запрос
    if ($atts['orderby'] === 'price') {
        $args['meta_key'] = '_wpshop_price';
        $args['orderby'] = 'meta_value_num';
    }

    $query = new WP_Query($args);

    if (!$query->have_posts()) {
        return '<p>Товары не найдены.</p>';
    }

    $output = '<div class="wpshop-products-list">';

    while ($query->have_posts()) {
        $query->the_post();
        $product_id = get_the_ID();
        $title = get_the_title();
        $permalink = get_permalink();
        $price = get_post_meta($product_id, '_wpshop_price', true);

        $output .= '<div class="wpshop-product-item">';
        $output .= '<a href="'.esc_url($permalink).'">'.esc_html($title).'</a>';
        $output .= '<span class="price">'.esc_html($price).'</span>';
        $output .= '</div>';
    }

    wp_reset_postdata();

    $output .= '</div>';
    return $output;
}

Теперь можно использовать шорткод с параметром orderby:

[wpshop_products category="books" limit="8" orderby="price" order="ASC"]

Этот вызов выведет 8 товаров из категории «books», отсортированных по возрастанию цены.

Плагины WPShop, которые помогут расширить функционал вывода продуктов

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

Вместе с кастомными шорткодами эти инструменты помогут создать мощный магазин с удобным интерфейсом.

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

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

Для улучшения производительности можно подключить кэширование результата шорткода с помощью стандартных WordPress Transients или внешних решений.

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

function wpzoom_wpshop_products_shortcode($atts) {
    $atts = shortcode_atts(array(
        'category' => '',
        'limit' => 5,
        'orderby' => 'date',
        'order' => 'DESC',
    ), $atts, 'wpshop_products');

    $cache_key = 'wpzoom_wpshop_products_'.md5(serialize($atts));
    $output = get_transient($cache_key);

    if ($output === false) {
        // Основной код запроса и формирования вывода (как выше)
        // ... (код запроса и генерации $output)

        // Сохраняем в кэш на 1 час
        set_transient($cache_key, $output, HOUR_IN_SECONDS);
    }

    return $output;
}

Итог

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

Как сделать удалённый вызов PHP функций в WordPress через AJAX
19.01.2026
WooCommerce: автоматическое изменение стоимости товаров при акциях без плагинов
30.06.2026
Оптимизация базы данных WordPress: практические советы и примеры кода
19.11.2025
Как добавить автоматическое удаление старого контента в WordPress
14.02.2026
Как создать и использовать атрибуты шорткода в WordPress с примерами кода
22.12.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше