我有一个WordPress网站,有一个相关的产品滑块内时,一个产品,相关的产品滑块有一个过滤器,只有相关产品的标签,而不是标签和类别。我想知道是否有可能只有相关的产品,只匹配至少3个标签或更多?在children主题的functions.php中,我使用这个过滤器只过滤标签:
add_filter( 'woocommerce_product_related_posts_relate_by_tag', '__return_false' );
r8xiu3jd1#
经过测试,可以正常工作:
add_filter( 'woocommerce_related_products', 'bbloomer_related_products_at_least_3_tags_in_common', 9999, 3 ); function bbloomer_related_products_at_least_3_tags_in_common( $related_posts, $product_id, $args ) { $tags_array = wc_get_product_term_ids( $product_id, 'product_tag' ); foreach ( $related_posts as $key => $related_post_id ) { $related_post_tags_array = wc_get_product_term_ids( $related_post_id, 'product_tag' ); if ( count( array_intersect( $tags_array, $related_post_tags_array ) ) < 3 ) unset( $related_posts[$key] ); } return $related_posts; }
这基本上检查每个相关产品是否至少有3个标签与当前产品相同。您可以将“3”更改为任何您想要的数字。此外,请不要用途:
因为这将停止基于标签比较产品。您需要使用以下代码:
add_filter( 'woocommerce_product_related_posts_relate_by_category', '__return_false' );
...这样您就不会按类别进行比较,也就是说产品只按标签进行比较
1条答案
按热度按时间r8xiu3jd1#
经过测试,可以正常工作:
这基本上检查每个相关产品是否至少有3个标签与当前产品相同。您可以将“3”更改为任何您想要的数字。
此外,请不要用途:
因为这将停止基于标签比较产品。您需要使用以下代码:
...这样您就不会按类别进行比较,也就是说产品只按标签进行比较