如何首先显示可用的 woocommerce 产品?

问题描述 投票:0回答:1

我正在尝试创建一个过滤器函数,该函数必须使用以下条件返回 woocommerce 产品:

  1. 现有产品优先
  2. 产品必须以最高价订购
  3. 缺货产品必须显示在有货产品之后

到目前为止,我已经创建了这个查询:

$args = [
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_query' => [
        'relation' => 'AND',
        [
            'relation' => 'OR',
            ['key' => '_stock_status', 'value' => 'instock', 'compare' => '='],
            ['key' => '_stock_status', 'value' => 'outofstock', 'compare' => '='],
        ],
        [
            'key' => '_price',
            'compare' => 'EXISTS',
        ],
    ],
    'orderby' => [
        'meta_value' => 'ASC',
        'meta_value_num' => 'DESC',
    ],
    'meta_key' => '_price',
];

主要问题是不可用的产品被插入到可用的产品中,而我希望它们显示在可用的产品之后,显然总是在降价。

wordpress woocommerce
1个回答
0
投票

建议将

meta_key
参数更改为
_stock_status
,然后使用PHP按价格对产品进行排序。如果这不理想,那么编写自定义 SQL 查询是下一个选择,因为
meta_key
参数仅接受一个元键。

© www.soinside.com 2019 - 2024. All rights reserved.