woocommerce产品如何通过产品标签获得订单

时间:2016-08-19 06:37:40

标签: php wordpress woocommerce sql-order-by

我想通过价格,日期和发行年份等项目对产品进行排序。 在发布年份的情况下,我制作了分类=发布年和发布_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;

但它不起作用。如何根据发行年份订单将代码更改为可能的排序?

1 个答案:

答案 0 :(得分:0)

如您所见[{3}} - orderby 参数包含一组有限的可能值。因此,没有简单的方法可以设置 orderby 参数,以便按分类名称值进行排序(还有here已被拒绝,proposition for the Core您会找到完整答案为什么)。有两种可能的解决方案:

1)创建将用于排序的自定义post元值。我已经描述了如何按orderby参数here

中的元值排序

2)尝试更多hacky方式并尝试通过here

等过滤器覆盖查询

我认为你应该避免在分类中存储这种数据 - 对于这类数据来说,post meta在我看来更好,但选择权归你的。使用分类法可能会导致网站可扩展性和扩展方面的未来问题。