从 WooCommerce 相关产品自定义 WP 查询中删除缺货产品

Posted

技术标签:

【中文标题】从 WooCommerce 相关产品自定义 WP 查询中删除缺货产品【英文标题】:Remove out of stock products from WooCommerce related products custom WP query 【发布时间】:2021-03-23 07:41:43 【问题描述】:

您好,我想根据我的自定义查询显示相关产品,但我只想显示“in_stocks”产品,而 meta_query 不适用于 tax_query。谁能帮帮我?

 $query_args = array(
    'posts_per_page' => 10,
    'no_found_rows'  => 1,
    'post__not_in' => array( $product->get_id()),
    'post_status'    => 'publish',
    'post_type'      => 'product',
     
            'tax_query'      => array(
                'relation'      => 'OR',
                 array(
                     'taxonomy'     => 'product_cat',
                     'field'        => 'id',
                     'terms'        => $cats_array
                 ),
                array(
                    'taxonomy'     => 'product_tag',
                    'field'        => 'id',
                    'terms'        => $tags_array
                ) )
    );

【问题讨论】:

【参考方案1】:

要从自定义 WP 查询中删除缺货产品,您需要向旅游税查询添加一个额外的数组,如下所示:

$query_args = array(
    'posts_per_page' => 10,
    'no_found_rows'  => 1,
    'post__not_in'   => array( $product->get_id() ),
    'post_status'    => 'publish',
    'post_type'      => 'product',
    'tax_query'      => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'product_visibility',
            'field'    => 'name',
            'terms'    => array('outofstock'),
            'operator' => 'NOT IN'
        ),
        array(
            'relation' => 'OR',
            array(
                'taxonomy'     => 'product_cat',
                'field'        => 'id',
                'terms'        => $cats_array
            ),
            array(
                'taxonomy'     => 'product_tag',
                'field'        => 'id',
                'terms'        => $tags_array
            )
        )
    ),
);

或者也可以通过这种方式使用元查询:

$query_args = array(
    'posts_per_page' => 10,
    'no_found_rows'  => 1,
    'post__not_in'   => array( $product->get_id() ),
    'post_status'    => 'publish',
    'post_type'      => 'product',
    'tax_query'      => array(
        'relation' => 'OR',
        array(
            'taxonomy'     => 'product_cat',
            'field'        => 'id',
            'terms'        => $cats_array
        ),
        array(
            'taxonomy'     => 'product_tag',
            'field'        => 'id',
            'terms'        => $tags_array
        )
    ),
    'meta_query'    => array(
        'key'     => '_stock_status',
        'value'   => 'outofstock',
        'compare' => '!='
    )
);

它应该可以工作。

相关:Show only WooCommerce in stock products with a WP_Query

【讨论】:

以上是关于从 WooCommerce 相关产品自定义 WP 查询中删除缺货产品的主要内容,如果未能解决你的问题,请参考以下文章

从 WooCommerce 中的相关产品中排除产品类别

在WooCommerce产品选项编辑页面中,在SKU之前显示自定义字段

自定义帖子类型的 WooCommerce 产品

从 Woocommerce 商店页面中的特定自定义元数据中过滤产品

在常规单个产品页面的自定义选项卡中显示“相关产品”

显示 WooCommerce 产品属性的自定义分类术语图像