Как вывести акционные товары Woocommerce

  • 1128
  • 08 июня 2021

Во время разработки или перезапуска интернет-магазина на woocommerce возникает задача вывести акционные товары. Т.е. товары у которых снижена цена.

Сделать это можно в любом месте любого шаблона несколькими способами.

Для начала разберемся, как в woocommerce маркируются акционные товары.

Способ №1

Через шорткод:

[sale_products]

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

Например, шорткод ниже выведет на страницу максимальное количество привью товара — 32.

[sale_products per_page="32"]

Еще аргументы, которые может принимать шорткод:

orderby - сортировка по заданным параметрам;
order - сортировка по возрастанию или убыванию (ASC или DESC);
category - выбирает по заданным категориям продуктов;
operator - показывает как сделать так, чтобы товары выводимые по категориям присутствовали в той или иной - AND. Были в одной категории - IN, исключить из указанных - NOT IN.

Способ №2

Есть такая функция:

wc_get_product_ids_on_sale()

Она получает id товаров, у которых проставлена скидка. С помощью ее с запроса WP_Query можно получить нужный результат. Самый простой код будет выглядеть вот так:

<ul class="products">

    <?php 
        $product_ids_on_sale = wc_get_product_ids_on_sale(); 
        $sale_args = array(
            'post_type' => 'product',
            'post__in' => array_merge(array(0), $product_ids_on_sale)
        ); 

        $sale_query = new WP_Query($sale_args); 

        if ($sale_query->have_posts()) 

           {while ($sale_query->have_posts() ) : $sale_query->the_post();

               wc_get_template_part( 'content', 'product' ); 

           endwhile;} 

        else {echo __('Продуктов не найдено'); } wp_reset_postdata(); ?> 
 
</ul><!--/.products-->

Здесь мы готовим кастомный цикл Вордпрес с помощью нужных параметров, в том числе и массива id акционных товаров, после этого выводим шаблон привью товара в нужном месте страницы с помощью цикла.

Способ №3

Самый сложный метод, требуюущий более угрублненный знаний настроек цикла Вордпрес.

<?php
    $sale_args = array(
        'post_type'      => 'product',
        'meta_query'     => array(
            'relation' => 'OR',
                array(
                    'key'           => '_sale_price',
                    'value'         => 0,
                    'compare'       => '>',
                    'type'          => 'numeric'
                ),
                array(
                    'key'           => '_min_variation_sale_price',
                    'value'         => 0,
                    'compare'       => '>',
                    'type'          => 'numeric'
            )
        )
    );

    query_posts($sale_args);

?>

В этом случае мы делаем запрос с помощью параметра meta_query и получаем данные по полю _sale_price. После того как подготовили параметры, их можно передать как в query_posts так и в WP_Query.

Внимание! Этот код может не работать для вариативных товаров.

Получите максимум от вашего сайта

Заказать проект

Введите корректный телефон