Woocommerce 3.0+中按属性关联产品

时间:2018-09-25 11:35:59

标签: php mysql wordpress woocommerce

我正在尝试根据属性(pa_shape)和产品类别在单个产品页面上过滤相关产品。例如:如果当前单个产品的形状为“圆形”,则相关产品应显示当前和父产品类别中所有形状为圆形的产品。

我试图使用"tax_query"来实现它,但是我不知道为什么它不起作用,然后我搜索了以前的各种答案和帖子以使用"woocommerce_product_related_posts_query"过滤器。

这是我从不同来源修改的代码。但是我不知道为什么它不起作用。任何帮助将不胜感激。谢谢。

add_filter( 'woocommerce_product_related_posts_query', 'function_to_filter_related_products' );
function function_to_filter_related_products($query) {
  global $wpdb,$product;
  $cats          = wc_get_product_terms( $product->id, 'product_cat', array( 'fields' => 'ids' ) );
  $cat_ids = implode( ',', $cats );
  $shapes        = 'pa_shape';  
  echo '<pre>'; print_r($cats); echo '</pre>';
  $query['join']  = 'LEFT JOIN ( SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN ( 39,41 ) ) AS exclude_join ON exclude_join.object_id = p.ID INNER JOIN ( SELECT object_id FROM wp_term_relationships INNER JOIN wp_term_taxonomy using( term_taxonomy_id ) WHERE term_id IN ('.$cat_ids.') AND taxonomy LIKE '.$shapes.' ) AS include_join ON include_join.object_id = p.ID';
  echo '<pre>'; print_r($query); echo '</pre>';
return $query;
}

0 个答案:

没有答案