WooCommerce相关产品按属性筛选

问题描述:

我看过this questionthis one但我仍然卡住。WooCommerce相关产品按属性筛选

我有"status"一个属性,我只想用"OPEN"值类(产品)出现。我在编辑related.php WooCommerce模板文件。

这里是我试过的两个版本的代码。

$key="status"; 
    $value="OPEN"; 
    $query_status = array('meta_key' => $key, 'meta_value' => $value); 
    $meta_query[] = $query_status; 

    $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_query'   => $meta_query, 
    )); 

    $products     = new WP_Query($args); 

第一个版本不会造成相关产品展现出来,所以它打破了代码:

版本1:

$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_query' => array(
    array(
    'key' => 'status', 
    'value' => 'OPEN', 
    ), 
), 
)); 

第2版。第二个没有效果。

我该如何解决这个问题?

谢谢

+0

@LoicTheAztec,对不起,在延迟答复,我有一个家庭应急和一直无法为周工作。我希望很快回到这个问题,并且很高兴能够测试你的代码。 – schatzkin

+0

嗯,我以为我在这里写了一个响应...我测试了代码,并没有得到任何结果,即使我删除了'post__in'=> $ related参数。我想我会继续尝试。 – schatzkin

好的,我有答案! WooCommerce以几种方式存储自定义属性,但在这种情况下,我需要使用术语查询而不是元查询。下面是最终的查询,就像一个魅力:

$args = apply_filters('woocommerce_related_products_args', array(
     'post_type'   => 'product', 
     'ignore_sticky_posts' => 1, 
     'no_found_rows'  => 1, 
     'posts_per_page'  => 4, 
     'orderby'    => $orderby, 
     'post__not_in'   => array($product->id), 
     'tax_query'  =>  array(
       array(
         'taxonomy' => 'pa_status', 
         'field' =>  'slug', 
         'terms' => 'open' 
      ) 
     ) 
));