Меняем сортировку в категории и магазине в 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
Далее вы сможете изменить внешний вид сортировки по своему желанию…
Если говорить, о скриншоте выше, то это следующий код:

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

Комментариев: 7
  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 (автор)

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

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

  3. Артем

    Я использовал ваш код для представления в том виде как у вас. Подскажите как сделать чтобы сортировалось без перезагрузки страницы, ajax?

    1. logi (автор)

      Да, делать Ajax запрос…
      Сам не делал, поэтому тут не подскажу…

  4. Аноним

    как сортировку по цене свою сделать, можете скинуть скрипт?

    1. logi (автор)

      Сортировка по цене есть по умолчанию – стилизуйте её.

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

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