Задать вопрос
@smash_wp

Не работает сортировка WooCommerce?

На главной странице вывожу товары только с акцией, добавляя такой код:
<?php
            if ( is_shop() && !is_search() ) {

                $products_on_sale = wc_get_product_ids_on_sale();

                $args = array(
                    'post_type' => 'product',
                    'post__in' => array_merge(array(0), $products_on_sale)
                );

                query_posts( $args );

            }

        ?>

		<?php if ( have_posts() ) : ?>


Именно на этой, главной странице и не работает сортировка. Разные способы пробовал. Путем проб выяснил, что причина в:
query_posts( $args );

Прописывал в параметрах 'orderby' и т. д. Пока ничего не помогло.

Кто сталкивался с такой проблемой, или может быть знает другой способ вывода акционных товаров, подскажите решение, пожалуйста.
  • Вопрос задан
  • 2600 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
arizona
@arizona
а что я, собственно, здесь делаю?...
В документации подсказывают формировать массив до передачи параметра
WP_Query
// This will NOT work
$exclude_ids = '1,2,3';
$query = new WP_Query( array( 'post__not_in' => array( $exclude_ids ) ) );

// This WILL work
$exclude_ids = array( 1, 2, 3 );
$query = new WP_Query( array( 'post__not_in' => $exclude_ids ) );
Ответ написан
kalbac
@kalbac
Wordpress Developer Full-Stack
Судя по всему цикл не срабатывает потому что функция is_shop() проверяет является ли данная страница страницей магазина или нет. Скорей всего у Вас в настройках указана другая страница (не главная).
и ещё момент эстетики)) не нужно делать слияние массивов в атрибуте post__in. Сделайте проще 'post__in' => array( $products_on_sale )

А ещё можно просто использовать шорткод
[sale_products per_page="12" columns="4" orderby="title" order="asc"]
Ответ написан
Комментировать
@E3ozKWLy0tpEkYl
Проблема заключается в неправильном переводе, или я бы сказал, понимании значения слов. По сути сортировка работает правильно если учесть, что в коде написано low to high, что в переводе означает «от низкого к высокому», но в переводе на русский мы видим слова «по убыванию», поэтому сортировка по цене работает не правильно.

wavifun.ru/ne-rabotaet-sortirovka-po-zene-woocommerce
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы