WooCommerce 中有这样一个流行的 WOOF 插件,用于过滤产品。它提供按类别、标签和属性过滤产品。但是如果不同品类的产品有不同的属性呢?相对而言,麻皮鞋应该按尺码分类,月光-按度数分类。很明显,产品类别“Lapti”页面上分级过滤器的存在只会造成混淆。
如何实现这样的结果,即“Bashes”类别页面上的 WOOF 过滤器仅显示按大小过滤,而在“Moonshine”类别页面上 - 仅显示按度数过滤?
WooCommerce 中有这样一个流行的 WOOF 插件,用于过滤产品。它提供按类别、标签和属性过滤产品。但是如果不同品类的产品有不同的属性呢?相对而言,麻皮鞋应该按尺码分类,月光-按度数分类。很明显,产品类别“Lapti”页面上分级过滤器的存在只会造成混淆。
如何实现这样的结果,即“Bashes”类别页面上的 WOOF 过滤器仅显示按大小过滤,而在“Moonshine”类别页面上 - 仅显示按度数过滤?
不幸的是,WOOF 插件不包含可用于修改侧边栏中显示的产品过滤器列表的 WordPress 钩子和过滤器。对插件代码的分析表明,侧边栏 html 是基于大量参数组成的
$woof_settings,而数组本身是在读取选项时创建的woof_settings。在这方面,决定拦截选项读取
woof_settings并根据当前的 WooCommerce 类别取消 WOOF 过滤器。functions.php 中的工作示例代码:此代码声明了一个 WordPress 过滤器,该过滤器在从选项数据库中读取时触发
woof_settings。该函数ft_option_woof_settings声明了一个数组 $category_filters,其中类别(opticheskoe-uplotnenie、mediakonvertery)通过属性(pa_form-factor 等)映射到 WOOF 过滤器。WOOF 中的每个过滤器始终以 pa_(产品属性)为前缀,后跟在管理面板中定义的属性 slug。该行
$cats = ...获取 $cats 中的当前 WooCommerce 类别数组。下一步是循环通过类别过滤器,如果 $category_filters 中的类别不在 WooCommerce 类别的当前数组中,则通过调用 unset 删除与其关联的所有属性过滤器。清除的参数数组返回给 WOOF 插件,它只显示我们留在侧边栏中的过滤器。
一个类别的过滤器如下所示:
对于另一个:
更新
如果粘贴和修改代码导致一些问题,您可以使用我的WOOF by Category WordPress 存储库中的插件。该插件基于上述代码。