改变woocommerce中的相关产品

时间:2014-10-07 22:57:00

标签: wordpress woocommerce

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

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

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

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

如果你们能帮助我,我真的很感激。

P.s:我想这个网站会根据名字对它们进行排序。

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

1 个答案:

答案 0 :(得分: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过滤器为true,则查询将按产品类别关联产品。同样,如果woocommerce_product_related_posts_relate_by_tag过滤器设置为true,则查询将按标签关联产品。默认情况下,这两个都设置为true。您可以同时禁用它们,但是我不知道除了编写自己的自定义SQL之外,您还要做的不仅仅是查询最新的产品。