如何在不同页面上显示不同的过滤器
[woof] shortcode 接受属性,让您可以控制显示哪些过滤器以及它们显示哪些产品。
主属性:
tax_only– 仅显示特定分类(类别、属性)by_only– 仅显示特定的非分类法过滤器(价格、SKU、库存等)taxonomies– 仅显示特定的分类术语(与动态计数一起使用)
短代码示例
过滤特定分类法
仅显示类别和品牌筛选器:
[woof tax_only="product_cat,pa_brand"]
筛选非分类元素
仅显示价格、SKU 和库存过滤器:
[woof by_only="by_price,by_sku,by_instock"]
Combined: Taxonomies + Non-Taxonomy Filters
显示特定的分类 AND 非分类过滤器:
[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price,by_instock"]
使用分类法属性(用于动态计数)
仅显示特定分类中的特定词语:
[woof taxonomies="product_cat:35,42,58+pa_brand:nike,adidas"]
注意: 该 taxonomies 当您启用“动态计数”或“隐藏空选项”时,将使用此属性。
完整设置指南
Step 1: Create Your Shortcodes
创建不同的 [woof] 每个页面的短代码,带有相应的属性。
示例:
- 供应商 A:
[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price"] - 供应商 B:
[woof taxonomies="product_cat:50+pa_brand:nike,adidas" by_only="by_price"]
步骤 2:在小部件中放置短代码
- 前往 外观 → 小工具
- 添加 文本 或 自定义 HTML 小部件到您的侧边栏
- 将您的短代码粘贴到小工具中
- 为每个短代码创建单独的小部件
步骤 3:安装条件小部件插件
You need a plugin to control widget visibility based on page conditions.
Choose one:
- Widget Logic – https://wordpress.org/plugins/widget-logic/
- 显示 WordPress 小工具逻辑 – https://github.com/realmag777/Show-WordPress-Widget-by-Logic
步骤 4:设置可见性条件
为每个小部件添加条件逻辑以控制其显示位置。
条件逻辑示例
在特定页面上显示过滤器
按页面 slug:
is_page('supplier-nike')
按页面 ID:
is_page(123)
在多个页面上显示过滤器
is_page(array('supplier-1', 'supplier-2', 'supplier-3'))
在类别存档中显示过滤器
按类别 ID:
is_product_category(35)
按类别 slug:
is_product_category('electronics')
在自定义分类法上显示过滤器
is_tax('supplier', 'nike-products')
排除特定页面
显示所有 EXCEPT 页面 123:
!is_page(123)
完整示例设置
场景:3 个供应商,不同过滤器
供应商 A (Nike) – 页面 ID:123
- Shortcode:
[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price"] - 小部件条件:
is_page(123) - 结果: 显示所有产品类别,并带有尺寸、颜色和价格过滤器
供应商 B (Adidas) – 页面 Slug:adidas-products
- Shortcode:
[woof taxonomies="product_cat:40,41,42" by_only="by_instock"] - 小部件条件:
is_page('adidas-products') - 结果: 仅显示类别 40、41、42 并带库存筛选器
供应商 C – 分类 ID:50
- Shortcode:
[woof tax_only="product_cat,pa_brand" by_only="by_price,by_sku"] - 小部件条件:
is_product_category(50) - 结果: 显示类别、品牌、价格和 SKU 过滤器
理解属性
tax_only vs taxonomies
使用 tax_only 当:
- 您想显示所有分类(所有分类项)
- 示例:
tax_only="product_cat,pa_brand"显示所有类别和所有品牌
使用 taxonomies 当:
- 您已启用“动态重新计数”或“隐藏空选项”
- 您想显示特定分类法中的特定术语
- 示例:
taxonomies="product_cat:35,42+pa_brand:nike"shows only categories 35 & 42, and only Nike brand
by_only Values
可用的非分类过滤器 by_only:
by_price– 价格范围滑块by_sku– Search by SKUby_text– 文本搜索by_author– Filter by authorby_onsales- 只显示特价商品by_instock– 仅显示有货产品- Meta field keys (if enabled in WOOF settings)
使用 by_only="none" 隐藏所有非分类过滤器。
查找 ID 和 Slug
分类 ID
- 前往 Products → Categories
- 悬停在类别名称上
- Look at browser status bar or URL
- Find
tag_ID=35– 数字是您的类别 ID
页面 ID
- 前往 Pages
- 将鼠标悬停在页面名称上
- 查看 URL:
post=123 - 该数字是您的页面 ID
属性别名
- 前往 商品 → 属性
- 属性的 slug 以...开头
pa_ - 示例:
pa_brand,pa_size,pa_color,pa_material
测试您的设置
- 先测试短代码
- 将简码直接放在测试页面上
- 验证过滤器是否正确显示
- 检查筛选是否有效
- 测试小部件可见性
- 访问过滤器应出现的每个页面
- Verify correct filter displays
- 检查其他过滤器是否未显示
- 验证每页只有一个过滤器
- 同一页面上的多个过滤器会冲突
- 使用小部件条件确保独特性
Important Limitation
每页只有一个过滤器: 每页只能激活一个 WOOF 过滤器。多个过滤器将产生冲突。
解决方案: 使用小部件条件逻辑,确保每页只显示一个过滤器小部件。
技巧
- 首先直接测试短代码
- 在添加到小部件之前,请在常规页面上测试短代码
- 确保属性正确
- 使用独占条件
- 确保小部件条件不重叠
- 每页应只显示一个过滤器
- 负面条件
- 使用
!is_page(123)排除特定页面 - Useful for “show everywhere except” scenarios
- 使用
- 检查属性 slug
- 属性 slug 必须以
pa_ - Wrong slug = filter won’t appear
- 属性 slug 必须以
完整文档
有关完整的短代码属性参考: https://products-filter.com/shortcode/woof
故障排除
过滤器未显示
Possible causes:
- Widget condition is false for current page
- 简码属性不正确
- 类别/属性 ID 不存在
- 多个过滤器冲突
解决方案:
- 验证页面 ID/slug 是否符合条件
- 在“产品”→“分类”中检查分类 ID
- 首先在常规页面上测试简码
- 确保每页只有一个过滤器小部件
显示错误产品
Possible causes:
- Category IDs incorrect
- 属性 slug 错误
- Using wrong attribute (
tax_onlyvstaxonomies)
解决方案:
- 仔细检查类别 ID
- Verify attribute slugs start with
pa_ - 使用
taxonomies如果启用了动态计数 - 先用更简单的短代码测试
Multiple Filters Displaying
原因: Widget conditions overlap
解决方案:
- 查看所有小部件条件
- 确保互斥
- Use negative conditions to separate
Filter Shows on Wrong Pages
原因: Widget condition too broad
解决方案:
- 使条件更具体
- 如果需要,使用页面 ID 而不是类别
- 仔细测试条件逻辑
Summary
要在不同页面上显示不同的筛选器:
- 创建自定义
[woof]带有短代码tax_only和/或by_only属性 - 将每个短代码放在单独的文本/HTML小部件中
- 安装 Widget Logic 插件
- 为每个 widget 添加条件逻辑(例如,
is_page(123)) - 测试以确保每个页面只显示一个过滤器
记住: 每个页面只能激活一个过滤器. 使用小部件条件确保独占性。