neverovski
Новичок
Всем добрый вечер, помогите разобраться в сортировке товара по категории.
То есть есть каталог, нужно отсортировать товар по категории. В настройках плагина - > Товары -> Отображение, есть пункты сортировка по дате, по цене и т.д. Но нужно, чтобы сортировало по категории, то есть брало одну категорию с id = 105 и выводила его товары, потом с id = 106 его товары ну и так далее.
Естественно нашёл код для вставки в function.php на англо язычном сайте, там для рандома. Я его исправил по категориям. $args['orderby'] = 'parent' - сортировка по id родительских записей/страниц.
$args['order'] = '' - обозначает убывающий или возрастающий параметр 'orderby'. По умолчанию 'DESC'.
Вот весь код:
При добавлении кода, поевляется доп поле в настройках плагина - > Товары -> Отображение. Выбираю сортировку по категории, захожу в каталог, а сортирует оно такое чувство как буд-то рандомно. Как отсортировать по категории, кто знает?
Так же доп поля:
То есть есть каталог, нужно отсортировать товар по категории. В настройках плагина - > Товары -> Отображение, есть пункты сортировка по дате, по цене и т.д. Но нужно, чтобы сортировало по категории, то есть брало одну категорию с id = 105 и выводила его товары, потом с id = 106 его товары ну и так далее.
Естественно нашёл код для вставки в function.php на англо язычном сайте, там для рандома. Я его исправил по категориям. $args['orderby'] = 'parent' - сортировка по id родительских записей/страниц.
$args['order'] = '' - обозначает убывающий или возрастающий параметр 'orderby'. По умолчанию 'DESC'.
Вот весь код:
PHP:
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'list' == $orderby_value ) {
$args['orderby'] = 'parent';
$args['order'] = '';
$args['meta_key'] = '';
}
return $args;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
function custom_woocommerce_catalog_orderby( $sortby ) {
$sortby['list'] = 'Сортировка по категории';
return $sortby;
}
Так же доп поля:
Код:
order (строка) - обозначает убывающий или возрастающий параметр 'orderby'. По умолчанию 'DESC'.
'ASC' - сортировка от наименьшего к наибольшему (1, 2, 3; a, b, c).
'DESC' - сортировка от наибольшего к наименьшего (3, 2, 1; c, b, a).
orderby (строка) - Сортировка согласно параметру. По умолчанию по 'date'. Можно использовать один или несколько параметров.
'none' - без сортировки
'ID' - сортировать по id записи. Обратите внимание на капитализацию.
'author' - сортировать по авторам.
'title' - сортировка по заголовкам.
'name' - сортировка по названию записи (post slug).
'date' - сортировка по дате.
'modified' - сортировка по дате изменения.
'parent' - сортировка по id родительских записей/страниц.
'rand' - случайная сортировка.
'comment_count' - сортировка по количеству комментариев.
'menu_order' - Сортировка страниц по порядку. Used most often for Pages (Order field in the Edit Page Attributes box) and for Attachments (the integer fields in the Insert / Upload Media Gallery dialog), but could be used for any post type with distinct 'menu_order' values (по умолчнию 0).
'meta_value' - Note that a 'meta_key=keyname' must also be present in the query. Note also that the sorting will be alphabetical which is fine for strings (i.e. words), but can be unexpected for numbers (e.g. 1, 3, 34, 4, 56, 6, etc, rather than 1, 3, 4, 6, 34, 56 as you might naturally expect). Use 'meta_value_num' instead for numeric values.
'meta_value_num' - Сортировка по цифровому мета значению. Также отметим, что "meta_key = имя_ключа 'должен присутствовать в запросе. Это значение позволяет численную сортировку как отмечалось выше, в "meta_value '.
'post__in' - Preserve post ID order given in the post__in array.