Woocommerce Product Filter插件——为不同类别设置不同filter

来源:互联网 发布:重庆时时彩 遗漏数据 编辑:程序博客网 时间:2024/06/08 13:19

问题描述

WOOF插件用来对Woocommerce商品进行筛选。现在商品总共有三种类别,我们假设分别为裙子、手机和杯子。注:这种分类只是为了说明遇到的问题,没有什么实际意义。
现在为裙子添加三种属性:大小(S, M, L),长短(长, 中, 短),有无袖(有, 无)。为手机添加两种属性:品牌(华为, 苹果),尺寸(4寸,5寸)。为杯子添加两种属性:带柄(带, 不带),颜色(透明, 红色, 黄色)。

下面对各个页面做个说明:

  • shop页面:列出所有商品的页面,也就是在Woocommerce->Setting->Product->Display为Shop Page设置的页面,假设URL为http:\//mysite.com/shop;
  • 裙子类别页面:显示所有裙子的页面,假设URL为http:\//mysite.com/product-category/dress
  • 手机类别页面:显示所有手机的页面,假设URL为http:\//mysite.com/product-category/phone
  • 杯子类别页面:显示所有杯子的页面,假设URL为http:\//mysite.com/product-category/cup

现在希望在shop页面添加筛选框F1,其中只有类别分类系统,即筛选裙子/手机/杯子:
这里写图片描述

在裙子页面添加筛选框F2,包含裙子的三个属性分类系统:

这里写图片描述

在手机页面添加筛选框F3,包含手机的两个属性分类系统:

这里写图片描述

在杯子页面添加筛选框F4,包含杯子的两个属性分类系统:

这里写图片描述

解决方案

我是采用修改plugins/woocommerce-product-filter/index.php文件的方法来添加不同的filter。
找到函数,将

echo do_shortcode('[woof sid="auto_shortcode" autohide=' . $shortcode_hide . ' price_filter=' . $price_filter . ']');

替换为

if(is_product_category('dress')){      echo "dress";      echo do_shortcode('[woof sid="auto_Myshortcode" autohide=' . $shortcode_hide . ' price_filter=' . $price_filter . ' tax_only="pa_dress_size,pa_dress_longth,pa_dress_sleeve"]'); }elseif(is_product_category('phone')){      echo "phone";      echo do_shortcode('[woof sid="auto_Myshortcode" autohide=' . $shortcode_hide . ' price_filter=' . $price_filter . ' tax_only="pa_phone_brand,pa_phone_size"]');}elseif(is_product_category('cup')){      echo "cup";      echo do_shortcode('[woof sid="auto_Myshortcode" autohide=' . $shortcode_hide . ' price_filter=' . $price_filter . ' tax_only="pa_cpu_handle,pa_cup_color"]');}elseif(is_shop()){      echo "shop";      echo do_shortcode('[woof sid="auto_Myshortcode" autohide=' . $shortcode_hide . ' price_filter=' . $price_filter . ' tax_only="product_cat"]');}

这样修改之后确实四个页面都是预期想要的样子。但是问题总是来得太突然。假设我们现在在裙子类别页面筛选S号的裙子,你会惊奇地发现返回的商品结果虽然是正确的,但是页面缺跳到shop页面了,因为echo "shop";被执行了,而且筛选框现在显示也不正常。

为什么呢??

这是因为WOOF就是这样设计的。唉!他把类别页面的筛选结果返回给shop页面进行显示,而由于shop页面的筛选框中只有类别分类系统,现在由于裙子类别没有子类别,所以没东西显示。不明白插件的作者为什么要多此一举,直接老老实实地在类别页面显示结果不好吗??

2017.8.11更新..
这个问题还是需要解决,给插件作者发送了一封邮件,简单的设置一下就可以实现产品类别页面的筛选结果仍然显示在类别页面。设置->Advanced->Option:

这里写图片描述

回复原话:This can cause the filter to work incorrectly。

阅读全文
0 0