繁体   English   中英

在 Woocommerce 元查询中检查库存的最佳方法是什么

[英]What is the best approach to checking stock in a Woocommerce meta query

我正在两个产品之间创建一种单向关系,“链接到”产品输出“链接自”产品的产品信息。

我可以使用自定义字段创建关系,并使用元查询根据该字段生成结果,但我还需要检查“链接自”产品是否仍然有货(如果没有库存管理),或库存数量大于 0。

这是我到目前为止采用的方法,它不返回任何匹配结果(当确实有匹配时):

$the_query = new WP_Query(array(
    'posts_per_page' => -1,
    'post_type'     => 'product',
    'meta_key'      => 'exact_new_version',
    'meta_value'    => $product->get_id(),
    'meta_query'     => array(
        'relation' => 'OR',
        array(
            'key' => '_stock_status',
            'value' => array('instock'),
            'compare' => 'IN',
        ),
        array(
            'key'     => '_stock_quantity',
            'value'   => 0,
            'compare' => '>'
        )
    )
));

另一种方法是检查查询循环中返回的匹配项的存量,但我认为这效率要低得多。

通过将两组关联数组传递到具有 AND 关系的元查询中,我设法获得了预期的结果,其中一组(检查库存)包含另外两个嵌套关联。 具有 OR 关系的数组。

本质上,元值必须匹配“instock”项目(如果未使用库存控制)或库存“> 0”的项目,如果它是:

$the_query = new WP_Query(array(
'posts_per_page' => -1,
    'post_type'     => 'product',
    'meta_query' => 
     array(
    'relation' => 'AND',//*
     array(
    'key' => 'new_version', 
            'value' => $product->get_ID(),
            'compare' => 'LIKE',
        ),
        array(
        'relation' => 'OR', //**
        array(
           'key' => '_stock_status',
                'value' => array('instock'),
                'compare' => 'IN',
        ),
        array(
                'key'     => '_stock_quantity',
                'value'   => 0,
                'compare' => '>',
        ),

     ),
    ),
));     

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM