我有一个 Wordpress 网站,在产品内部有一个相关产品滑块,相关产品滑块有一个过滤器,只通过标签而不是标签和类别来关联产品。 我想知道是否有可能只有至少匹配至少 3 个或更多标签的相关产品?
在儿童主题的 functions.php 中,我有这个过滤器只能按标签过滤:
add_filter( 'woocommerce_product_related_posts_relate_by_tag', '__return_false' );
经测试有效:
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_tag', '__return_false' );
因为这将停止基于标签比较产品。您需要改用它:
add_filter( 'woocommerce_product_related_posts_relate_by_category', '__return_false' );
...这样您就不会按类别进行比较,这意味着产品仅按标签进行比较