HUSKY - Products Filter Professional for WooCommerce

如何修复 WOOF 过滤时分页显示过多页面

如果您的 WooCommerce 分页在使用 WOOF (HUSKY) 产品过滤器时显示不正确的页码,本指南将解决此问题。

问题

Symptom: 当使用 WOOF/HUSKY 筛选产品时,分页显示的页面比实际存在的要多。

示例:

  • 筛选器显示 15 个产品(应为 2 页)
  • 分页显示:1, 2, 3, 4, 5… (5+ 页)
  • Clicking page 3+ shows empty results or “No products found”

正在发生什么: WooCommerce 的分页是基于总产品目录而不是筛选结果来计算页数的。WOOF 会筛选产品,但分页不会相应更新。

解决方案

添加此代码以强制分页使用 WOOF 过滤查询的正确页数。

步骤 1:添加代码

将此添加到您的子主题的 functions.php:

/**
 * Fix pagination page count when using WOOF filtering
 * Forces pagination to use correct max_num_pages from filtered query
 */
add_filter('woocommerce_pagination_args', function($args) {
    global $wp_query, $WOOF;
    
    // Check if WOOF filtering is active
    if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {
        // Force correct page count from HUSKY filtered query
        $args['total'] = $wp_query->max_num_pages;
    }
    
    return $args;
}, 999);

Priority 999: 确保这在其他分页修改之后运行。

步骤 2:清除缓存

  1. 清除 WordPress 缓存(如果使用缓存插件)
  2. 清除浏览器缓存 (Ctrl+F5)
  3. 测试过滤后的结果

Step 3: Verify

  1. 应用任何 WOOF 过滤器(分类、价格、属性)
  2. 检查页面底部的分页
  3. 页码现在应该与实际过滤结果匹配

修复前:

Showing 12 products Pages: 1 2 3 4 5 6 7 8 (wrong!)

修复后:

Showing 12 products Pages: 1 2 (correct!)

工作原理

if ($WOOF->is_isset_in_request_data($WOOF->get_swoof_search_slug())) {

其功能: 通过查看 URL 中是否有 WOOF 的搜索参数来检查 WOOF 过滤是否当前处于活动状态。

$args['total'] = $wp_query->max_num_pages;

其功能: 使用过滤后的 WordPress 查询的实际页面计数覆盖 WooCommerce 的分页总数。

为什么优先级是 999? 某些主题或插件会修改分页。优先级 999 确保此代码最后运行并具有优先权。

 

故障排除

分页仍然错误

Problem: 添加代码后页面计数仍不正确

Possible causes:

  1. 代码不在子主题中
    • 验证您是否正在编辑子主题的 functions.php
    • 如果不在子主题中,父主题更新将擦除代码
  2. 缓存未清除
    • 清除 WordPress 缓存插件
    • 清除服务器缓存(主机面板)
    • 在隐身模式下测试
  3. Theme overriding pagination
    • 一些主题使用自定义分页函数
    • 尝试将优先级提高到 9999
    • 检查主题文档

解决方案: Increase priority if theme conflicts:

add_filter('woocommerce_pagination_args', function($args) {
    // ... code ...
}, 9999); // Higher priority

 

何时需要此修复

You need this fix if:

  • ✅ 使用 WOOF/HUSKY 进行产品过滤
  • ✅ 分页显示的页数超过实际页数
  • ✅ 点击较高的页码没有显示产品
  • ✅ 过滤后的结果计数与分页不匹配