Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php woocommerce产品如何通过产品标签获得订单_Php_Wordpress_Woocommerce_Sql Order By - Fatal编程技术网

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

Php woocommerce产品如何通过产品标签获得订单,php,wordpress,woocommerce,sql-order-by,Php,Wordpress,Woocommerce,Sql Order By,我想按价格、日期和发布年份等项目对产品进行分类。 对于发布年份,我制定了一个分类法=发布年份&发布类型=产品,并为其设置了年份。 现在我想按年份分类。我的代码是: case 'rand' : $curr_args['orderby'] = 'rand'; break; case 'date' : $curr_args['orderby'] = 'date'; $curr_args['order'] = $order == 'ASC' ? 'ASC' :

我想按价格、日期和发布年份等项目对产品进行分类。 对于发布年份,我制定了一个分类法=发布年份&发布类型=产品,并为其设置了年份。 现在我想按年份分类。我的代码是:

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; 案例“兰德”: $curr_args['orderby']='rand'; 打破 案例“日期”: $curr_args['orderby']='date'; $curr_args['order']=$order=='ASC'?'ASC':'DESC'; 打破 案例“价格”: 全球$wpdb; $curr_args['orderby']=“meta_value_num{$wpdb->posts}.ID”; $curr_args['order']=$order=='DESC'?'DESC':'ASC'; $curr_args['meta_key']='u price'; 打破 “人气”一案: $curr_args['meta_key']='total_sales'; 添加_过滤器('posts_子句',数组(WC()->query,'order_by_popularity_post_子句'); 打破 案例“发布年份”: $curr_args['orderby']=“发布年份”; $curr_args['order']=$order=='ASC'?'ASC':'DESC'; $curr_args['tax_query']=array(array('taxonomy'=>'release year',); “标题”一案: $curr_args['orderby']='title'; $curr_args['order']=$order=='DESC'?'DESC':'ASC'; 打破 但它不起作用。如何将代码更改为可能的按发布年份顺序排序?

如您所见,orderby参数有一组有限的可能值。因此,没有简单的方法来设置按分类法名称值排序的orderby参数(还有一个已被拒绝,您将找到完整的答案)。有两种可能的解决方案:

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

2) 尝试一种更黑客的方式,并尝试通过如下过滤器覆盖查询

我认为您应该避免在分类法中存储此类数据——在我看来,post-meta是存储此类数据的更好的地方,但选择权在您。对其使用分类法可能会导致网站可伸缩性和扩展方面的未来问题。

如您所见,orderby参数具有有限的可能值集。因此,没有简单的方法来设置按分类法名称值排序的orderby参数(还有一个已被拒绝,您将找到完整的答案)。有两种可能的解决方案:

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

2) 尝试一种更黑客的方式,并尝试通过如下过滤器覆盖查询

我认为您应该避免在分类法中存储此类数据——在我看来,post-meta是存储此类数据的更好的地方,但选择权在您。将分类法用于it可能会导致网站可伸缩性和扩展方面的未来问题