Как отсортировать продукты по цене по возрастанию и поместить все товары без цены в конец? (Woocommerce)

Вопрос или проблема

У меня такая проблема, я пробовал много решений, но ничего не сработало.

Мне нужно, чтобы все продукты “без цены” отображались в конце каталога, когда я сортирую продукты по цене по возрастанию в WooCommerce.

Настройки сортировки товаров по умолчанию в WooCommerce:

Чтобы включить сортировку товаров по умолчанию в WooCommerce, просто перейдите в настройки WooCommerce > вкладка «Товары» и установите сортировку по цене (по возрастанию или по убыванию).

Кроме того, это не по теме, так как это сторонний плагин. Пожалуйста, обратитесь в службу поддержки WooCommerce для получения лучших предложений.

Ответ или решение

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

Шаг 1: Изменение поведения сортировки

WooCommerce, по умолчанию, позволяет сортировать товары по цене, но не предоставляет возможности изначально помещать товары без цены в конец. Поэтому вы сможете достичь нужного результата с помощью пользовательского кода.

Используя хук pre_get_posts

Для начала, добавьте следующий код в файл functions.php вашей темы. Это необходимо сделать через редактор тем или через FTP-доступ к вашему сайту.

add_action('pre_get_posts', 'custom_price_sorting');

function custom_price_sorting($query) {
    if (is_shop() || is_product_category() || is_product_tag()) {
        // Убедитесь, что это запрос основной.
        if (!is_admin() && $query->is_main_query()) {
            $query->set('meta_key', '_price');
            $query->set('orderby', array(
                'meta_value_num' => 'ASC', // сортируем по числовому значению поля _price
                'title' => 'ASC' // сортируем по заголовку, если цены равны
            ));
            // Добавляем условие для переноса товаров без цены в конец
            $query->set('meta_query', array(
                'relation' => 'OR',
                array(
                    'key' => '_price', // выбираем товары с указанной ценой
                    'compare' => 'EXISTS'
                ),
                array(
                    'key' => '_price', // выбираем товары без цены
                    'compare' => 'NOT EXISTS'
                )
            ));
        }
    }
}

Шаг 2: Проверка результатов

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

Шаг 3: Изменение визуального оформления

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

Завершение

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

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

Оцените материал
Добавить комментарий

Капча загружается...