【问题标题】:Woocommerce sort ASC and DESC based on categoryWoocommerce 根据类别对 ASC 和 DESC 进行排序
【发布时间】:2015-05-27 12:44:08
【问题描述】:

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

如果产品类别 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;
}

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    您可以使用以下代码来解决您的目的,

       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' ) )
    

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

    【讨论】:

    • 谢谢,效果很好!我在自定义的 meta_key 和 orderby 中添加了回来。
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多