カスタムタクソノミーのページネーションがうまく動かない時

カスタムタクソノミーのページネーションがうまく動かない時

今回はwordpressのページネーションがうまく動かない時の対処方法です。

状況としてはカスタムタクソノミーの検索を行う際に1ページ目は表示されるが、2ページ目から404ページが表示されてしまう場合です。

以前front-pageのサブクエリでページネーションで注意点をまとめました。

今回は検索の場合になります。

調査・原因

いろいろ調べてみたところ、ページネーションのURLは正常でした。

また、クエリも「s」や「posts_per_page」などはしっかりと入っていました。

ここまで見た感じでは問題がなく、結構頭抱えました、、、

もう一度クエリをしっかり見てみると検索の際に発行していた「tax_query」が異なっていました。

検索では「genre_tag」というカスタムタクソノミーを検索していましたが、「post_tag」(デフォルトタグ)に変わっていました。

1ページ目は通常にタクソノミーが入っているのですが、2ページ目はなぜか「post_tag」に代わっていることがわかりました。

原因はほぼ間違いなくこの「post_tag」に代わってしまっていることです。

対策

勝手に「post_tag」になってしまう原因はhtml部分にありました。

<input type="checkbox" name="tag[]" value="<?php echo $term_id; ?>" />

上記のように複数のタームIDを配列にして検索で使用していたのですが、このnameの名前が良くなかったです。

tag[]はデフォルトのタグで使用されている名前でした。

この名前を変更したら問題なく動作するようになりました。

まとめ

デフォルトの命名には気を付けなくてはいけません。

カテゴリーは検索ではよく使うのですが、タグは使ったことがなかったので良い勉強になりました。