【问题标题】:Get distinct results from wordpress / woocommerce search query从 wordpress / woocommerce 搜索查询中获得不同的结果
【发布时间】:2016-01-09 16:21:09
【问题描述】:

我一直在寻找数周来解决这个问题,但我还没有弄清楚(主要是由于缺乏知识)。

我有一个带有 woocommerce 的 WP 网站。位于此处:

www.importa-supplementen.nl(非常慢,抱歉)

我已经上传了很多产品。由于我们公司的数据库工作,如果产品 X 有 4 个不同的类别(不同的 SKU)等,我必须上传 4 次。不幸的是,我无法在那里更改任何内容。现在,当我想在前端搜索产品 X 时,显然我得到了 4 个相同的产品(通过客户的眼睛)。例如尝试搜索:“女王”

我已经通过“add_filter”阅读了它们,您可以在 wordpress/woocommerce 中更改搜索查询,但似乎对我没有任何用处。至少,我发现的少数。我需要一些说明:

选择不同的.....或者可能是 GROUP BY ?

我读过一些关于 pre_get_posts 的文章?

我的网站使用 woocommerce 的 archive-product.php 来显示搜索结果。

我希望有 WP / woocommerce 专家可以告诉我这个。我认为这应该很简单,但对我来说,这些解决方案很多时候是最难找到的。非常感谢!

基础

【问题讨论】:

  • 您可以使用pre_get_posts 排除某个分类的项目(在本例中为product_cat)。但是您怎么知道要排除哪些类别?即:如果产品“Foo 1”属于 A 类,而“Foo 2”(“Foo 1”的克隆)属于 B 类,那么搜索结果中应该出现哪个版本的“Foo”?将产品复制 4 次似乎非常落后。它完全违背了 WordPress 分类法的意义,如果他们真的想使用 WooCommerce,您的公司应该重新考虑这一点。
  • 它显示 4 个项目是有原因的。为什么要排除其他 3 个项目?那应该隐藏哪个?每个都有不同的SKU,如果你不展示另一个产品如何减少它的库存?
  • 我不使用库存。所以这不是问题。但感谢您的提醒!
  • SKU 是库存单位...

标签: php mysql wordpress woocommerce distinct


【解决方案1】:

这是一个示例,说明如何使用 pre_get_posts 从前端搜索查询中排除字词。

function so_34695883_exclude_product_category( $query ) {
    if ( ! $query->is_admin() && $query->is_search() && $query->is_main_query() ) {
        $tax_query = array(
            array(
                'taxonomy' => 'actor',
                'field'    => 'slug',
                'terms'    => array( 'foo', 'bar' ),
                'operator' => 'NOT IN',
            ),
        );
        $query->set( 'tax_query', $tax_query ); 
    }
}
add_action( 'pre_get_posts', 'so_34695883_exclude_product_category' );

【讨论】:

  • product_cat 是一个自定义分类法......你应该使用类似$query->set('tax_query', $taxquery);
  • 你可能是对的。不要总是测试,明天会尝试修改。
  • 感谢您的所有努力?我编写了同一个网站,只是为另一个项目定制,只使用 SELECT dinstict。这不可能吗?
  • 根据@Reigel 的建议编辑。我不太明白你会如何选择一个不同的项目,因为它们都有一个独特的。 post_id`。如果您可以编辑您的帖子以分享您已经在工作的内容,那么也许有人可以帮助您使其适应 WooCommerce/WordPress 方式。
  • 也许 posts_where 是您所需要的? mySQL 不是我的强项。
猜你喜欢
  • 2019-10-15
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多