2015-05-27 3 views
3

Я стараюсь сортировать товары по категориям.Сортировка Woocommerce ASC и DESC по категории

Если категория товаров А и подкатегории сортировать по возрастанию

Else если категория товаров B и подкатегории сортировки по убыванию.

В functions.php

add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby'); 
function am_woocommerce_catalog_orderby($args) { 

$args['meta_key'] = 'countdown_date'; 

$args['orderby'] = 'meta_value'; 

// need an if statement here to switch the order 

$args['order'] = 'DESC';   

return $args; 
} 

ответ

2

Вы можете использовать следующий код, чтобы решить вашу цель,

add_filter('woocommerce_get_catalog_ordering_args','wdm_change_ordering',10,1); 

    function wdm_change_ordering($args) 
    { 
     if(is_product_category()) 
     { 
      global $wp_query; 
      $cat = $wp_query->get_queried_object(); 

      $category_A_term_id = 53; 
      $category_B_term_id = 2; 

      if(!empty($cat) && ($cat->term_id === $category_A_term_id || $cat->parent === $category_A_term_id)) 
     { 
      $args['order'] = 'ASC'; 
     } 
     elseif(!empty($cat) && ($cat->term_id === $category_B_term_id || $cat->parent === $category_B_term_id)) 
     { 
      $args['order'] = 'DESC'; 
     } 
    } 

    return $args; 

}

Не забудьте изменить, $ category_A_term_id & $ category_B_term_id значения переменных в соответствующие Идентификаторы категорий.

Выше кода будет проверяться, если текущий - это страница с фотографией категории, и если она есть, категория «A» или дочерний элемент категории «A», порядок изменения аналогично для категории «B».

В качестве альтернативы, вы можете также использовать следующие условия WooCommerce,

is_product_category(array('shirts', 'games')) 

, но здесь все категории должны быть указаны.

+0

Спасибо, это сработало отлично !. Я добавил обратно в обычную meta_key и orderby. –