2016-11-23 19 views
2

私は最初ではないと私はおそらくこの旅の仕事をしようとする最後にはなりません知っている。私はそこにあるすべてのものを見てきました。Wordpress/WooCommerce - 関連の商品by属性

ほとんどの回答はWC 2.1より前です。

多くの返信はtax_queryで機能します。毎回、誰かがクエリに触れようとします。私は両方を試しました、どちらのオプションも私のために働かない。

WooCommerceに表示されている関連商品を調整してカスタム属性による関係を含めるにはどうすればよいですか?

目標woocommerce_related_products_args経由

function product_related_posts_relate_by_attributes ($query){ 
    global $product; 

    //* 
    $brands_array  = wc_get_product_terms($product->id, 'pa_brand', array('fields' => 'ids')); 
    $artists_array  = wc_get_product_terms($product->id, 'pa_artist', array('fields' => 'ids')); 
    $manufacturers_array = wc_get_product_terms($product->id, 'pa_manufacturer', array('fields' => 'ids')); 

    $query['where'] .= ' AND (';   
     $query['where'] .= " (tt.taxonomy = 'pa_brand' AND t.term_id IN (" . implode(',', $brands_array) . ")) ";  
     $query['where'] .= ' OR '; 
     $query['where'] .= " (tt.taxonomy = 'pa_artist' AND t.term_id IN (" . implode(',', $artists_array) . ")) ";  
     $query['where'] .= ' OR '; 
     $query['where'] .= " (tt.taxonomy = 'pa_manufacturer' AND t.term_id IN (" . implode(',', $manufacturers_array) . ")) ";  
    $query['where'] .= ')';//*/ 

    return $query; 
} 
add_filter('woocommerce_product_related_posts_query', 'product_related_posts_relate_by_attributes'); 

テスト:猫を介した関係AND(ブランドやアーティストやメーカー)woocommerce_product_related_posts_query経由

テスト

function custom_related_product_args ($args){ 
    global $product; 

    $cats   = wc_get_product_terms($product->id, 'product_cat', array('fields' => 'slug')); 
    $brands  = wc_get_product_terms($product->id, 'pa_brand', array('fields' => 'slug')); 
    $artists  = wc_get_product_terms($product->id, 'pa_artist', array('fields' => 'slug'));  
    $manufacturers = wc_get_product_terms($product->id, 'pa_manufacturer', array('fields' => 'slug')); 

    unset($args['post__in']); 
    $args['tax_query'] = array( 
     'relation' => 'AND', 
     array(
      'taxonomy' => 'category', 
      'field' => 'slug', 
      'terms' => $cats, 
     ), 
     array(
      'relation' => 'OR', 
      array(
       'taxonomy' => 'pa_brand', 
       'field' => 'slug', 
       'terms' => $brands, 
      ), 
      array(
       'taxonomy' => 'pa_artist', 
       'field' => 'slug', 
       'terms' => $artists, 
      ), 
      array(
       'taxonomy' => 'pa_manufacturer', 
       'field' => 'slug', 
       'terms' => $manufacturers, 
      ) 
     ) 
    ); 

    return $args; 
} 
add_filter('woocommerce_related_products_args', 'custom_related_product_args'); 

誰かがしてくださいでした私はどこが間違っているのか教えてくれてとても優雅です。

ありがとうございます!

答えて

0

私は「woocommerce_related_products_args経由でテスト」を試してみました、あなただけ「ナメクジ」に「ナメクジ」とも「カテゴリ」に「product_cat」 :)

global $product; 

$cats   = wc_get_product_terms($product->id, 'product_cat', array('fields' => 'slugs')); 
$brands  = wc_get_product_terms($product->id, 'pa_brand', array('fields' => 'slugs')); 
$artists  = wc_get_product_terms($product->id, 'pa_artist', array('fields' => 'slugs'));  
$manufacturers = wc_get_product_terms($product->id, 'pa_manufacturer', array('fields' => 'slugs')); 

unset($args['post__in']); 
$args['tax_query'] = array( 
    'relation' => 'AND', 
    array(
     'taxonomy' => 'product_cat', 
     'field' => 'slug', 
     'terms' => $cats, 
    ), 
    array(
     'relation' => 'OR', 
     array(
      'taxonomy' => 'pa_brand', 
      'field' => 'slug', 
      'terms' => $brands, 
     ), 
     array(
      'taxonomy' => 'pa_artist', 
      'field' => 'slug', 
      'terms' => $artists, 
     ), 
     array(
      'taxonomy' => 'pa_manufacturer', 
      'field' => 'slug', 
      'terms' => $manufacturers, 
     ) 
    ) 
); 

return $args; 
を変更する必要があります表示されます
関連する問題