カスタムタクソノミーのページネーションがうまく動かない時
今回は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[]はデフォルトのタグで使用されている名前でした。
この名前を変更したら問題なく動作するようになりました。
まとめ
デフォルトの命名には気を付けなくてはいけません。
カテゴリーは検索ではよく使うのですが、タグは使ったことがなかったので良い勉強になりました。