我正在尝试根据属性(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;
}