我想通过价格,日期和发行年份等项目对产品进行排序。 在发布年份的情况下,我制作了分类=发布年和发布_type =产品并为其设定年份。 现在我想按年份排序。我的代码就是:
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 :(得分:0)
如您所见[{3}} - orderby 参数包含一组有限的可能值。因此,没有简单的方法可以设置 orderby 参数,以便按分类名称值进行排序(还有here已被拒绝,proposition for the Core您会找到完整答案为什么)。有两种可能的解决方案:
1)创建将用于排序的自定义post元值。我已经描述了如何按orderby参数here
中的元值排序2)尝试更多hacky方式并尝试通过here
等过滤器覆盖查询我认为你应该避免在分类中存储这种数据 - 对于这类数据来说,post meta在我看来更好,但选择权归你的。使用分类法可能会导致网站可扩展性和扩展方面的未来问题。