因此,在一个拥有如此多产品的大型购物网站中,大多数情况下,与主要产品相比,它会显示不相关的相关产品。
我不完全同意这种说法。如果“Ascis Gel Cumulus 15 Men Black”和“Ascis Gel Domain 15 Men Black”都在 Asics 类别中,它们将是相关的。他们可以将 Gel Cumulus 和 Gel Domain 作为子类别或标签。我不知道,但让我印象深刻的是,如果您有效地对事物进行分类和标记,您将获得更好的相关产品。我认为您也可以使用以下建议添加自定义属性。
也就是说,我相信可以调整相关产品的查询方式。然而,这并不是一件容易的事,因为我的 SQL 不太好,所以我只能提供部分答案。如果您查看single-product/related.php 模板,您会看到
$related = $product->get_related( $posts_per_page );
您可以将get_related() 函数追溯到产品类
abstract-wc-product.php.
查看get_related(),它设置了一个高级SQL 查询,但您可以通过woocommerce_product_related_posts_query 过滤器过滤查询子句。
add_filter( 'woocommerce_product_related_posts_query'. so_26246618_product_related_posts_query', 10, 2 );
function so_26246618_product_related_posts_query( $query, $product ){
global $wpdb;
$query['join'] = // write a new join clause;
$query['where'] = // write a new where clause
return $query;
}
或者,如果woocommerce_product_related_posts_relate_by_category 过滤器为真,则查询将按产品类别关联产品。同样,如果 woocommerce_product_related_posts_relate_by_tag 过滤器设置为 true,则查询将通过标签关联产品。默认情况下,这两者都设置为 true。您可以同时禁用它们,但我不知道您除了查询最新产品而不编写您自己的自定义 SQL 之外,还会做任何其他事情。