Всем привет. Вчера у меня была интересная задачка, человек пытался сделать сортировку товаров у плагине WordPress Woocommerce стандартными методами + нестандартными, в итоге сайт упал. Проблему решили, сайт заработал, woocommerce сортировка товаров по артикулу тоже заработала. Сейчас хочу поделиться с вами кодом и пошаговым руководством.
У плагина вукомерц, есть своя штатная настройка сортировки. Находится она по ссылке вашдомен/wp-admin/admin.php?page=wc-settings&tab=products§ion=display ниже на скине видно какие вкладки я открывал (изображение кликабельно):
Всё бы ничего, но к сожалению, у этой штатной сортировки нет параметра сортировка по артиклу товара, а также нет возможности сортировать по другим произвольным полям.
Далее, я покажу вам, как эту проблему можно исправить.
Вам нужно открыть файл functions.php вашей темы в редакторе и забросить туда вот такой несложный код:
add_filter('woocommerce_get_catalog_ordering_args', 'my_woocommerce_order'); function my_woocommerce_order($args){ $args['meta_key']='_sku'; $args['orderby']='meta_value'; $args['order']='asc'; return $args; }
!!! Вместо строчки $args['order']='asc'; можно писать $args['order']='desc'; - для обратной сортировки!!!
Код нужно добавлять вот так как у меня на скине ниже:
Этот пример отключить возможность штатной сортировки, её настройки станут не действительны, пока в коде темы будет этот код.
Бывает необходимость сортировать товары, по их наличию. Для этого нам нужно немного модифицировать наш код выше. Он будет выглядеть теперь вот так:
add_filter('woocommerce_get_catalog_ordering_args', 'my_woocommerce_order'); function my_woocommerce_order($args){ $args['meta_key']='_stock_status'; $args['orderby']='meta_value'; $args['order']='asc'; return $args; }
Как вы поняли, вместо _stock_status можно писать название любого произвольного поля и wordpress будет сортировать ваши товары в каталоге по этому параметру.
Напоследок, хотелось бы обратить ваше внимание на плагины для wordpress, которые также умеют менять сортировку. Возможно они вам подойдут больше, для вашей задачи. В моем случае было целесообразно использовать код который я привел выше.
Всем спасибо за внимание, не забывайте делиться этим постом с друзьями в соц. сетях:
Спасибо большое за помощь!