【问题标题】:Woocommerce Default sorting not working when set custom ordering设置自定义排序时,Woocommerce 默认排序不起作用
【发布时间】:2018-03-15 06:44:52
【问题描述】:

我正在使用 wordpress+woocommerce 并在排序时遇到问题。默认情况下,我在 woocommerce 设置中设置了“自定义排序+名称”选项。但我的其他过滤器(如按价格排序、受欢迎程度)不起作用。我尝试使用这个钩子并且它正在工作,但它默认显示所有价格从最高到最低的产品。我想在第一次加载页面时设置“自定义排序”,然后如果用户选择其他选项,如价格、受欢迎程度,那么排序应该根据选定的过滤器工作。

add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
function am_woocommerce_catalog_orderby( $args ) {
    $args['meta_key'] = '_price';
    $args['orderby'] = 'meta_value_num';
    $args['order'] = 'desc'; 
    return $args;
}

【问题讨论】:

  • 可以在菜单 WooCommerce > 设置 > 产品中设置默认排序
  • 是的,我已经在菜单 WooCommerce > 设置 > 产品中进行了设置。它适用于自定义订购,这是首选。但是对于其他选项不起作用,例如价格,当我们从前端的下拉菜单中选择这些时的受欢迎程度
  • 在 WooCommerce 3.3.3 中对我来说很好用。当我使用过滤器“woocommerce_get_catalog_ordering_args”将其默认为该类型时,它唯一不做的是将组合框过滤器更改为“从高到低”选择

标签: wordpress woocommerce


【解决方案1】:

您可以在您的functions.php 文件中使用此代码将组合框过滤器设置为按价格排序:从高到低。我不知道为什么您的过滤器不起作用,它们在 WooCommerce 3.3.3 中对我来说很好。

add_filter('woocommerce_default_catalog_orderby', 'modify_woocommerce_default_catalog_orderby');

function modify_woocommerce_default_catalog_orderby( $orderby ) {
    if( empty( $orderby ) ) {
        return 'price-desc';
    }

    return $orderby;
}

【讨论】:

  • 我又检查了一件事。当我从排序下拉列表中选择价格或流行度时,查询字符串中不会出现“orderby = popularity”。似乎它重定向到同一页面并且没有任何反应。
  • @testingexpert 受欢迎程度基于“total_sales”,如果您还没有卖出任何东西,那么过滤器将不会做任何事情。
猜你喜欢
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
相关资源
最近更新 更多