WooCommerce 按价格订购无法正常工作

Has*_*san 2 wordpress woocommerce

选择按价格排序的选项(Woocommerce 下拉列表)时,要按价格排序的产品,但它无法正常工作;前 6 个排序:

  • 1,50 欧元
  • 11,75 欧元
  • 1,75 欧元
  • 1,75 欧元
  • 2,95 欧元
  • € 4,50

链接到未完成的网站:http : //verduijncichlids.com/product-categorie/vissen-voorraad/west-afrika-cichliden/?orderby=price

任何人都知道发生了什么以及如何解决这个问题?干杯!

Abo*_*ifi 17

对于可能遇到此问题的任何人

根据:https : //woocommerce.wordpress.com/2019/04/01/performance-improvements-in-3-6/

如果您使用“WP All Import”等工具导入产品,则必须在以下位置重新生成“产品查找表”:

WooCommerce > 状态 > 工具 > 产品查找表


Jan*_*ick 6

如果按价格订购在 WooCommerce 中无法正常工作,安全的解决方案始终是自定义 WooCommerce 处理按价格订购的方式。这是有效的,因为 WooCommercepriceprice-desc是默认订购选项。(在 WordPress v5.4.1 和 WooCommerce v4.1.0 中使用标准主题进行测试):

在你的functions.php中添加:

/**
 * Customize ordering by price
 */
add_filter('woocommerce_get_catalog_ordering_args', function ($args) {
    $orderby_value = isset($_GET['orderby']) ? wc_clean($_GET['orderby']) : apply_filters('woocommerce_default_catalog_orderby', get_option('woocommerce_default_catalog_orderby'));

    if ('price' == $orderby_value) {
        $args['orderby'] = 'meta_value_num';
        $args['order'] = 'ASC';
        $args['meta_key'] = '_price';
    }

    if ('price-desc' == $orderby_value) {
        $args['orderby'] = 'meta_value_num';
        $args['order'] = 'DESC';
        $args['meta_key'] = '_price';
    }

    return $args;
});
Run Code Online (Sandbox Code Playgroud)

就像 @Pelmered 提到的那样,使用 'order_by' 选项很重要meta_value_num,因此排序是按数字值而不是字符串值完成的。不过,我将其更改meta_key为“_price”,因为上面使用和提到的 WooCommerce 版本需要这样做。

进一步阅读:

WordPress 文档 WP_Query

WooCommerce 文档自定义排序选项