2016-08-19 183 views
3

我看過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

回答

0

好的,我有答案! 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' 
      ) 
     ) 
));