WOOF Filteringでページネーションが多すぎるページを表示するのを修正する方法
WOOF (HUSKY) 製品フィルターを使用しているときに WooCommerce のページネーションでページ番号が正しく表示されない場合は、このガイドで修正できます。
問題
症状: WOOF/HUSKY で製品をフィルター処理すると、実際には存在しないページよりも多くのページがページネーションに表示されます。
例:
- フィルターは 15 商品を表示します(2 ページであるべきです)
- ページネーション表示:1、2、3、4、5… (5ページ以上)
- ページ3+をクリックすると、空の結果または「商品が見つかりません」が表示されます
何が起こっているか: 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);
優先度 999: 他のページネーションの変更後に実行されることを保証します。
ステップ 2: キャッシュをクリア
- WordPressキャッシュをクリアする(キャッシュプラグインを使用している場合)
- ブラウザキャッシュをクリアする (Ctrl+F5)
- Test filtered results
ステップ 3: 確認
- 任意のWOOFフィルター(カテゴリ、価格、属性)を適用する
- ページ下部のページネーションを確認してください
- ページ番号は実際のフィルター結果と一致するはずです
修正前:
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は、このコードが最後に実行され、優先されることを保証します。
トラブルシューティング
ページネーションがまだ間違っています
問題: コードを追加した後もページ数が正しくない
考えられる原因:
- 子テーマにないコード
- 子テーマの functions.php を編集していることを確認してください
- 親テーマのアップデートは、子テーマにない場合、コードを消去します
- キャッシュがクリアされていません
- WordPress キャッシュプラグインをクリアする
- サーバーキャッシュをクリア(ホスティングパネル)
- シークレットモードでテスト
- テーマによるページネーションの上書き
- 一部のテーマではカスタムページネーション関数が使用されています
- 優先度を9999に増やしてみてください
- Check theme documentation
ソリューション: テーマの競合が発生した場合に優先度を上げる:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
この修正が必要な場合
以下の場合にこの修正が必要です:
- ✅ WOOF/HUSKY を使用した製品フィルタリング
- ✅ ページネーションに存在するページ数よりも多くのページが表示される
- ✅ 高いページ番号をクリックしても製品が表示されない
- ✅ フィルター結果のカウントがページネーションと一致しません