如何手动将WooCommerce产品排序设置为“受欢迎程度”?

时间:2019-04-15 00:57:58

标签: php wordpress sorting woocommerce product

在WooCommerce中,我使用以下代码将特定产品类别归档页面的默认排序设置为按日期排序:

add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 20, 1);
function custom_catalog_ordering_args($sortby)
{
    $product_category = 'specials'; // <== HERE define your product category slug 

    // Only for defined product category archive page
    if (! is_product_category($product_category)) {
        return;
    }
    return 'date';
}

但是,这会影响整体的默认排序设置(按“受欢迎程度”),因为当我在商店页面上查看时,排序不正确,但是如果我手动将其更改为其他排序方式,然后又将其正确排序。

如何解决此问题,或者如何手动设置商店的其余部分以通过php通过Popularity订购,因为这可以解决此问题?

1 个答案:

答案 0 :(得分:2)

已更新:使用过滤器挂钩,您始终需要返回第一个函数参数变量,而不仅仅是返回return 单独而没有值或默认值函数变量参数…所以在您的代码中:

add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 10, 1);
function custom_catalog_ordering_args( $orderby )
{
    $product_category = 'specials'; // <== HERE define your product category slug 

    // For all other archives pages
    if ( ! is_product_category($product_category)) {
        return $orderby; // <====  <====  <====  <====  <====  HERE
    }
    // For the defined product category archive page
    return 'date'; 
}

或更完善的方式:

add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 10, 1);
function custom_catalog_ordering_args( $orderby ) {
    // HERE define your product category slug
    $product_category = 'specials';  

    // Only for the defined product category archive page
    if ( is_product_category($product_category)) {
        $orderby = 'date'; 
    }
    return $orderby; 
}

现在应该可以工作。

相关: