无法将特定woocommerce类别的默认排序顺序更改为“受欢迎程度”

时间:2018-09-13 07:02:43

标签: php wordpress sorting woocommerce

您好,我正在尝试更改一个特定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;
}

但是该类别仍未按受欢迎程度进行排序。

我做错了吗?

1 个答案:

答案 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
    }

}