我想在类别页面中按平均评分 (DESC) 然后按价格 (ASC) 订购产品。
| id | avgrating | price |
| 1 | 4 | 10 |
| 2 | 4 | 5 |
| 3 | 5 | 7 |
顺序:3、2、1。
所以我尝试了:
$args['meta_key'] = '_wc_average_rating';
$args['orderby'] = array(
'meta_value_num' => 'DESC',
'price' => 'ASC',
);
但它们也不是按价格排序的。我也更换了price
with _price
,结果相同。
我正在使用最新版本的 WordPress (4.8) 和 WooCommerce (3.0.8)。
Edit:
如果我使用:
$args['meta_key'] = '_wc_average_rating';
$args['orderby'] = array(
'meta_value_num' => 'DESC',
'ID' => 'DESC',
);
顺序按例外方式工作,按平均评分 DESC,然后按 ID DESC。所以,我必须改变ID
with price
但我无法让它发挥作用。
通过通过检查order
有参数
检查这些,
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
if ( 'sort_by_type' == $orderby_value ) {
$args['orderby'] = 'meta_value_num title';
$args['order'] = 'ASC';
$args['meta_key'] = 'sort_by_type';
}
if ( '_wc_average_rating' == $orderby_value ) {
$args['orderby'] = 'meta_value_num title';
$args['order'] = 'DESC';
$args['meta_key'] = '_wc_average_rating';
}
return $args;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)