Сниппет для вывода только товаров со скидкой в цикле WooCommerce

28 нояб. 2014 г., 18:43:17
Просмотры: 20.5K
Голосов: 1

Я пытаюсь вывести только товары со скидкой в цикле WooCommerce через сниппет. Для этого я использовал код ниже, но он выводит все товары. Мне нужно вывести только товары со скидкой в цикле.

<!-- Новые товары WooCommerce -->
<ul class="products">
    <?php
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => 4
            );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
                woocommerce_get_template_part( 'content', 'product' );
            endwhile;
        } else {
            echo __( 'Товары не найдены' );
        }
        wp_reset_postdata();
    ?>
</ul>
<!-- Новые товары WooCommerce -->

Что мне нужно сделать для достижения желаемого результата?

7
Комментарии

Сторонние плагины и темы не относятся к тематике этого сайта. Вам следует обратиться к разработчику или задать вопрос на форуме поддержки WooCommerce на wordpress.org

Robert hue Robert hue
28 нояб. 2014 г. 19:03:42

@Roberthue То, что ты сказал, действительно забавно. :P Если у тебя есть время, попробуй поискать WooCommerce на этом сайте и посмотри, сколько вопросов ты сможешь найти. Если не получится, открой http://wordpress.stackexchange.com/search?q=WooCommerce и посмотри там.

Muhammad Hassan Muhammad Hassan
29 нояб. 2014 г. 05:57:55

Вопросы по WooCommerce не относятся к тематике этого сайта. Мы заняты тем, что закрываем все подобные вопросы, если ты этого не заметил. Твой вопрос также будет закрыт как не соответствующий тематике. Извини за это. Спасибо.

Pieter Goosen Pieter Goosen
29 нояб. 2014 г. 06:07:48

Пожалуйста, ознакомьтесь с этими связанными темами на Meta

Pieter Goosen Pieter Goosen
29 нояб. 2014 г. 06:11:26

Да, в WPSE много вопросов о сторонних плагинах, но это не делает их правильными. Задавать вопросы в правильном месте — это гарантия получения лучшей и более быстрой поддержки.

Robert hue Robert hue
29 нояб. 2014 г. 06:51:33

Так вы сначала закрываете тег WooCommerce, чтобы никто больше его не упоминал. Сначала доведите до совершенства себя, а потом требуйте этого от других.

Muhammad Hassan Muhammad Hassan
29 нояб. 2014 г. 07:28:33

Так разрешены ли вопросы по WooCommerce на http://stackoverflow.com/search?q=WooCommerce

Muhammad Hassan Muhammad Hassan
29 нояб. 2014 г. 07:29:54
Показать остальные 2 комментариев
Все ответы на вопрос 1
2

Наконец-то я получил код. Используя код ниже, вы можете выбрать товары по акции, которые являются либо Простыми товарами со скидкой, либо Вариативными товарами со скидкой. Имейте в виду, что этот код выберет все записи, в которых вы указали акционную цену. Поэтому избегайте добавления цены в это поле (показано на прикрепленном изображении), если ваша акционная цена совпадает с оригинальной, потому что тогда это не будет товаром по акции, но данный код всё равно включит его в цикл товаров со скидкой.

Скриншот формы данных товара WooCommerce

<!-- WooCommerce Товары по акции -->
<ul class="products">
    <?php
        $args = array(
            'post_type'      => 'product',
            'posts_per_page' => 4,
            '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'
                    )
                )
        );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
                woocommerce_get_template_part( 'content', 'product' );
            endwhile;
        } else {
            echo __( 'Товары не найдены' );
        }
        wp_reset_postdata();
    ?>
</ul>
<!-- WooCommerce Товары по акции -->
29 нояб. 2014 г. 11:03:15
Комментарии

К сожалению, у меня это не работает для вариативных товаров. Поле "_min_variation_sale_price" отсутствует. WooCommerce, вероятно, изменил это за прошедшие годы.

Jordan Carter Jordan Carter
26 мар. 2018 г. 20:30:08

Следующий вариант сработал у меня. Добавьте в аргументы запроса: 'post__in' => wc_get_product_ids_on_sale(),

Jordan Carter Jordan Carter
26 мар. 2018 г. 20:39:47