Меняем сортировку в категории и магазине в Woocommerce

Меняем сортировку в категории и магазине в Woocommerce

В этой статье я уберу все стандартные варианты сортировок Woocommerce (по цене, по популярности, по рейтингу, по дате, по названию) – и добавлю свои: По популярности, по названию, по атрибуту – НО с возможностью сортировки “от большего к меньшему”.

Чтобы вы поняли о чем я, и где это было применено:
Переделанная сортировка Woocommerce

 

 

Требовалась сортировка по Алфавиту, Популярности, Сложности (атрибут товара) – в том числе от меньшего к большему в популярности и сложности, и А-Я, Я-А при сортировке по алфавиту.

Для начала давайте уберем всё стандартные типы сортировок в woocommerce, для этого добавим следующий код в файл functions.php вашей темы:

Если вам нужно убрать какие-то (не все) способы сортировки – используйте код выше, я подписал, какая строка, за какой способ отвечает.

Далее, мы добавляем свои способы сортировки в woocommerce:

Сортировка по алфавиту

Сортировка по популярности

Не много меняем критерии по сравнению с предыдущим кодом.

За популярность мы берём количество продаж товара.

Сортировка по атрибуту

Наверное, самое полезное – это возможность сделать свою сортировку товаров в категории по атрибуту товара. В моём случае данным атрибутом выступал атрибут сложность.
Тут нужно учесть один важный момент – мы не можем осуществлять сортировку напрямую по атрибуту – нам нужно добавлять атрибуты товара как мета данные к записи – вот по ним-то мы и сможем сортировать.
Давайте добавим следующий код в ваш functions.php

Если добавляете сортировку в магазин с уже существующими товарами – их нужно пересохранить.

Сортировка будет осуществляться по slug’у атрибута – для этого я добавлял в начало slug’а цифру, что-то типа 1_legko, 2_sredne, 3_slojno – таким образом мы получим верную сортировку. (Можно сортировать по ID атрибута, если ваc это устроит).
Добавляем код в functions.php:

Теперь мы можем сортировать продукты по нашему атрибуту.

Внешний вид сортировки

Стандартная сортировка Woocommerce – это выпадающий список, чтобы заменить его, вам нужно редактировать файл:
woocommerce/templates/loop/orderby.php
Скопируйте его в свою тему, в папку
woocommerce/loop
Далее вы сможете изменить внешний вид сортировки по своему желанию…
Если говорить, о скриншоте выше, то это следующий код:

Конечно, это только направление решения, описывать стили я думаю, не имеет смысла – ведь основная информация у вас уже есть ;).

Комментариев: 3
  1. Иван

    добрый день! А можно с вами как то связаться, пообщаться по поводу сайта?

  2. Евгений

    function woo_catalog_orderby( $orderby ) {
    unset($orderby[“price”]); // Сортировка по цене по возрастанию
    unset($orderby[“price-desc”]); // Сортировка по цене по убыванию
    unset($orderby[“popularity”]); // Сортировка по популярности
    unset($orderby[“rating”]); // Сортировка по рейтингу
    unset($orderby[“date”]); // Сортировка по дате
    unset($orderby[“title”]); // Сортировка по названию
    unset($orderby[“menu_order”]); // Сортировка по умолчанию (можно определить порядок в админ панели)
    return $orderby;
    }
    add_filter( “woocommerce_catalog_orderby”, “woo_catalog_orderby”, 20 );

    _____________

    Неработоспособная херня, фильтр становится неактивным

    1. logi (автор)

      Все работает – примеры с рабочих проектов.

      О каком фильтре идет речь?

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: