WooCommerceフィルタリング時にページネーションが多すぎるページ数を表示する問題の修正方法
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)
- フィルター結果をテスト
ステップ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に上げてみる
- テーマのドキュメントを確認
解決方法:テーマの競合がある場合は優先度を上げる:
add_filter('woocommerce_pagination_args', function($args) {
// ... code ...
}, 9999); // Higher priority
この修正が必要な場合
以下の場合にこの修正が必要です:
- ✅ WOOF/HUSKYを商品フィルターに使用している
- ✅ ページネーションが実際より多くのページを表示する
- ✅ 大きいページ番号をクリックすると商品が表示されない
- ✅ フィルター結果の件数がページネーションと一致しない