您好,我正在尝试更改一个特定woocommerce类别的默认排序顺序。
此类别有很多cbd畅销产品
我正在尝试将该类别的默认排序顺序更改为“按受欢迎程度”。
我发现以下代码将特定类别的默认排序更改为“按日期”
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_catalog_ordering_args', 20, 1 );
function custom_catalog_ordering_args( $args ) {
$product_category = 't-shirts'; // <== HERE define your product category
// Only for defined product category archive page
if( ! is_product_category($product_category) ) return $args;
// Set default ordering to 'date ID', so "Newness"
$args['orderby'] = 'date ID';
if( $args['orderby'] == 'date ID' )
$args['order'] = 'DESC'; // Set order by DESC
return $args;
}
然后我将T恤替换为“ slug cbd-best-sellers”类别,然后将日期ID更改为受欢迎程度,例如:
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_catalog_ordering_args', 20, 1 );
function custom_catalog_ordering_args( $args ) {
$product_category = 'cbd-best-sellers'; // <== HERE define your product category
if( ! is_product_category($product_category) ) return $args;
$args['orderby'] = 'popularity';
if( $args['orderby'] == 'popularity' )
$args['order'] = 'ASC'; // Set order by DESC
return $args;
}
但是该类别仍未按受欢迎程度进行排序。
我做错了吗?
答案 0 :(得分:1)
您使用的钩子是用于通过不设置默认值的值来添加或更改订单的。
如果要设置默认的排序选项,则需要使用woocommerce_default_catalog_orderby
因此您的代码应类似于以下内容:
add_filter( 'woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby' );
function custom_default_catalog_orderby() {
$product_category = 'cbd-best-sellers'; // <== HERE define your product category
if ( is_product_category( $product_category ) ) {
return 'popularity'; // Can also use title and price
}
}