2016-08-19 183 views
1

我想根据价格,日期和发布年份等项目对产品进行分类。 在发布年份的情况下,我做了分类=发布年份& post_type = product并为其设置年份。 现在我想按年排序。我的代码是这样的:woocommerce产品如何通过产品标签获得订单

 

case 'rand' : 
    $curr_args['orderby'] = 'rand'; 
    break; 
case 'date' : 
    $curr_args['orderby'] = 'date'; 
    $curr_args['order'] = $order == 'ASC' ? 'ASC' : 'DESC'; 
    break; 
case 'price' : 
    global $wpdb; 
    $curr_args['orderby'] = "meta_value_num {$wpdb->posts}.ID"; 
    $curr_args['order'] = $order == 'DESC' ? 'DESC' : 'ASC'; 
    $curr_args['meta_key'] = '_price'; 
    break; 
case 'popularity' : 
    $curr_args['meta_key'] = 'total_sales'; 
    add_filter('posts_clauses', array(WC()->query, 'order_by_popularity_post_clauses')); 
    break; 
case 'release-year' : 
    $curr_args['orderby'] = 'release-year'; 
    $curr_args['order'] = $order == 'ASC' ? 'ASC' : 'DESC'; 
    $curr_args['tax_query'] = array(array('taxonomy' => 'release-year',);); 
case 'title' : 
    $curr_args['orderby'] = 'title'; 
    $curr_args['order'] = $order == 'DESC' ? 'DESC' : 'ASC'; 
    break; 

但它不工作。我如何将代码更改为按发布年份顺序进行排序?

回答

0

正如你可以看到here - 在排序依据参数有一组有限的可能值。所以没有简单的方法来设置order by参数用于通过分类名称值进行排序(还有一个proposition for the Core已被拒绝,here您将找到完整答案为什么)。有两种可能的解决方案:

1)创建将用于排序的自定义帖子元值。我描述了如何通过元值在orderBy参数here

2)尽量多一点点哈克的方式进行排序,并试图通过覆盖过滤器的查询关键词,比如here

我认为,你应该避免这种存储分类中的数据类型 - 在我看来,后期元数据对于这类数据来说更好,但选择是你的。使用它的分类可能会导致未来的网站可扩展性和扩展问题。