Woocommerce:woocommerce查询库存数量简单和可变产品

时间:2018-09-23 13:24:36

标签: wordpress woocommerce

我将为woocommerce产品编写一个查询,以显示具有stock = 1的产品。如果该产品是变量并且任何变量具有stock = 1,则此查询中也应包括该查询。 例如:

产品一:

  • 简单
  • 库存数量:1

产品二:

  • 简单
  • 库存数量:5

产品三:

  • 变化
  • 变量之一:
  • 库存数量:1
  • 变量二:
  • 库存数量:4
  • 变量三:
  • 库存数量:7

产品四:

  • 变化
  • 变量之一:
  • 库存数量:3
  • 变量二:
  • 库存数量:2
  • 变量三:
  • 库存数量:5

因此查询应返回产品1和产品3。

我使用以下查询:

$query = array(
        'relation' => 'AND',
        array(
            'key'     => '_stock_status',
            'value'   => 'instock',
            'compare' => '='
        ),
        array(
            'key'     => '_stock',
            'type'    => 'numeric',
            'value'   => '1',
            'compare' => '='
        ),
    ); 

但是,返回产品三无效。 你能帮我吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要为差异产品&product_variation添加帖子类型product,以便也可以过滤变量产品。

因此您可以执行以下操作:

add_action( 'woocommerce_product_query', 'modify_query', 10, 2 );

function modify_query( $q, $instance ) {

    $post_type = array( 'product', 'product_variation' );

    $q->set( 'post_type', (array) $post_type );
    $meta_query[] = [
        'relation' => 'AND',
        [
            'key'     => '_stock_status',
            'value'   => 'instock',
            'compare' => '=',
        ],
        [
            'key'     => '_stock',
            'type'    => 'numeric',
            'value'   => '1',
            'compare' => '=',
        ],

    ];

    $q->set( 'meta_query', $meta_query );
}