Woocommerce相关产品 - 仅显示库存相关产品

时间:2015-03-30 17:39:53

标签: woocommerce product stock

我试图过滤相关产品中显示的产品"在woocommerce中,它只输出有库存的相关产品。

我已尝试编辑" related.php"模板如下 - 但它无法正常工作!

$args = apply_filters( 'woocommerce_related_products_args', array(
    'post_type'            => 'product',
    'ignore_sticky_posts'  => 1,
    'no_found_rows'        => 1,
    'posts_per_page'       => $posts_per_page,
    'orderby'              => $orderby,
    'post__in'             => $related,
    'post__not_in'         => array( $product->id ),
    'meta-key'             => '_stock_status',
    'meta-value'           => 'outofstock',
    'compare'              => '!='
) );

我很感激任何帮助

非常感谢

2 个答案:

答案 0 :(得分:4)

此处给出的答案均不适合我(我相信提到的woocommerce_output_related_products_args过滤器不接受meta_queries),并且我想要一个不使用SQL查询的解决方案,因此将以下解决方案汇总在一起:

add_filter( 'woocommerce_related_products', 'mysite_filter_related_products', 10, 1 );
function mysite_filter_related_products( $related_product_ids ) {

    foreach( $related_product_ids as $key => $value ) {
        $relatedProduct = wc_get_product( $value );
        if( ! $relatedProduct->is_in_stock() ) {
            unset( $related_product_ids["$key"] );
        }
    }

    return $related_product_ids;
}

希望可以帮助寻求类似解决方案的人。

答案 1 :(得分:0)

我认为您已完成此任务,但如果有人遇到此问题,那么他们可以使用此代码仅显示相关产品上的“库存”产品,请更改为related.php

$args = apply_filters( 'woocommerce_related_products_args', array(

  'post_type'            => 'product',
  'ignore_sticky_posts'  => 1,
  'no_found_rows'        => 1,
  'posts_per_page'       => $posts_per_page,
  'orderby'              => $orderby,
  'post__in'             => $related,
  'post__not_in'         => array( $product->id ),
  'meta_key'             => '_stock_status',
  'meta_value'           => 'instock',
  'compare'              => '!='
)
);