2014-10-07 137 views
0

如您所知,woocommerce根据其标签和类别过滤相关产品。因此,在一个拥有如此多产品的大型购物网站中,大多数时候,它显示的是与主要产品相比无关的相关产品。更改woocommerce中的相关产品

我想改变它的工作原理。我的意思是我想根据主要产品的名称显示相关产品。我所有的同类产品都有相同的名称,但颜色除外。因此,如果我可以添加黑客代码来根据名称过滤相关产品,那么它会更有用。

例如:假设我有一个名为“Ascis Gel Cumulus 15 Men Black”的产品,如果我有一个代码根据精确相似的词来过滤产品,那就太棒了。

--->显示为相关产品,如果它们恰好有6个相似的确切单词。如果没有,则显示具有5个相似单词的产品,如果不显示具有刚好4个相似单词的产品等等......

如果你们能帮助我,那我真的很感激。 P:我想这个网站根据名字对它们进行排序。

http://www.barcin.com/nike-air-max-2014-spor-ayakkabi-621077-009

回答

0

正因为如此,在一个大的购物网站有这么多的产品,大部分的时间,这表明相比于主要产品无关的相关产品。

我不完全同意这个说法。如果“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之外,你会做的不仅仅是查询最新的产品。