woocommerce产品如何通过产品标签获得订单
问题描述:
我想根据价格,日期和发布年份等项目对产品进行分类。 在发布年份的情况下,我做了分类=发布年份& 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;
但它不工作。我如何将代码更改为按发布年份顺序进行排序?
答
正如你可以看到here - 在排序依据参数有一组有限的可能值。所以没有简单的方法来设置order by参数用于通过分类名称值进行排序(还有一个proposition for the Core已被拒绝,here您将找到完整答案为什么)。有两种可能的解决方案:
1)创建将用于排序的自定义帖子元值。我描述了如何通过元值在orderBy参数here
2)尽量多一点点哈克的方式进行排序,并试图通过覆盖过滤器的查询关键词,比如here
我认为,你应该避免这种存储分类中的数据类型 - 在我看来,后期元数据对于这类数据来说更好,但选择是你的。使用它的分类可能会导致未来的网站可扩展性和扩展问题。