Woocommerce根据类别对ASC和DESC进行排序

时间:2015-05-27 01:41:18

标签: php wordpress woocommerce

我尝试根据类别对产品进行排序。

如果产品类别A和子类别对ASC进行排序

否则,如果产品类别B和子类别对DESC进行排序。

在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;
}

1 个答案:

答案 0 :(得分: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变量值到相应的类别ID。

以上代码将检查,如果当前是类别存档页面,如果是,则类别' A'或者类别' A'的孩子,更改顺序,类似于类别' B'。

或者,您也可以使用以下WooCommerce条件

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

但是,这里必须指定所有类别。