Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 按价格计算的商业订单无法正常工作_Wordpress_Woocommerce - Fatal编程技术网

Wordpress 按价格计算的商业订单无法正常工作

Wordpress 按价格计算的商业订单无法正常工作,wordpress,woocommerce,Wordpress,Woocommerce,当选择“按价格排序”(Woocommerce下拉菜单)选项时,将选择要按价格排序的产品,但该选项不起作用; 前6项分类如下: 1.50欧元 11,75欧元 1,75欧元 1,75欧元 2,95欧元 4,50欧元 链接到未完成的网站: 有人知道发生了什么以及如何解决这个问题吗? 干杯 看来这一切都很顺利。查看特色产品,因为它们具有优先级。按数字元数据订购时,您需要使用meta\u value\u num,否则它将作为字符串进行比较,否则,因为post元数据将作为字符串存储在数据库中 $arg

当选择“按价格排序”(Woocommerce下拉菜单)选项时,将选择要按价格排序的产品,但该选项不起作用; 前6项分类如下:

  • 1.50欧元
  • 11,75欧元
  • 1,75欧元
  • 1,75欧元
  • 2,95欧元
  • 4,50欧元
链接到未完成的网站:

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

看来这一切都很顺利。查看特色产品,因为它们具有优先级。

按数字元数据订购时,您需要使用
meta\u value\u num
,否则它将作为字符串进行比较,否则,因为post元数据将作为字符串存储在数据库中

$args = array(
    'meta_key' => 'price',
    'orderby' => 'meta_value_num',
    'order' => 'ASC'
);
$query = new WP_Query( $args );

您应该将Woocommerce插件更新至最新版本。这是插件中的一个bug,或者您可能更改了核心函数中的某些内容


更新帮助我很好地解决了这一问题和其他几个问题。

适用于可能面临此问题的任何人

根据:

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

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


如果按价格订购在WooCommerce中无法正常工作,则安全的解决方案始终是自定义WooCommerce如何处理按价格订购。这是因为WooCommerce
price
price 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;
});
与@Pelmered一样,重要的是使用
meta\u value\u num
作为“order\u by”选项,以便按数值而不是字符串值进行排序。不过,我将
meta_键
改为“_price”,因为这是上面提到的WooCommerce版本所要求的

进一步阅读:


为什么有些产品的欧分分隔符是“,”而不是“?我需要在Woocommerce中添加哪个文件?@Hassan这是在WordPress/Woocommerce中获取帖子(产品)列表的标准查询。将其放置在要打印列表的任何位置。您需要循环查询结果。如果您不明白这一点,这可能不是您正在寻找的解决方案。谢谢!这正是我所需要的。在Woocommerce v4.5.1中,这一点仍然适用。