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

在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进行订购,因为这可能会解决问题?


动漫人物
浏览 382回答 1
1回答

POPMUISE

随着过滤钩子,你需要总是返回第一个函数参数变量,而不仅仅是return 单纯没有价值或默认函数变量参数...所以在你的代码:add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 10, 1);function custom_catalog_ordering_args( $orderby ){&nbsp; &nbsp; $product_category = 'specials'; // <== HERE define your product category slug&nbsp;&nbsp; &nbsp; // For all other archives pages&nbsp; &nbsp; if ( ! is_product_category($product_category)) {&nbsp; &nbsp; &nbsp; &nbsp; return $orderby; // <====&nbsp; <====&nbsp; <====&nbsp; <====&nbsp; <====&nbsp; HERE&nbsp; &nbsp; }&nbsp; &nbsp; // For the defined product category archive page&nbsp; &nbsp; return 'date';&nbsp;}或者这样更好:add_filter('woocommerce_default_catalog_orderby', 'custom_catalog_ordering_args', 10, 1);function custom_catalog_ordering_args( $orderby ) {&nbsp; &nbsp; // HERE define your product category slug&nbsp; &nbsp; $product_category = 'specials';&nbsp;&nbsp;&nbsp; &nbsp; // Only for the defined product category archive page&nbsp; &nbsp; if ( is_product_category($product_category)) {&nbsp; &nbsp; &nbsp; &nbsp; $orderby = 'date';&nbsp;&nbsp; &nbsp; }&nbsp; &nbsp; return $orderby;&nbsp;}现在应该可以工作了。
打开App,查看更多内容
随时随地看视频慕课网APP