こんにちは!奥田です!

WordPressでカスタムタクソノミーのパーマリンクを変更したいなと思っていろいろ触ってみてたんですけど、どうもうまくいかない。

もしかしたら、ちょっといろいろ勘違いをしているかもしれませんよ。

カスタムタクソノミーのパーマリンクの前提

カスタム投稿を作って、そのカスタム投稿用のカスタムタクソノミーも作ったとき、カスタム投稿用のTermの一覧記事を表示させると、デフォルトだとWordPressのルート直下にいきなりTaxonomyTermコンビが来て、おっとなるときあると思うんですよね。

カスタム投稿の記事のURL

https://ocws.jp/{custom-post-name}/{custom-post-slug}/

あるタームのアーカイブページ

https://ocws.jp/{taxomomy}/{term}/

こうしたい人も多いはず。

https://ocws.jp/{custom-post-name}/{taxomomy}/{term}/

term_link()とadd_rewrite_rule()を使う

これを解決するにはterm_link()add_rewrite_rule()を使います。

term_link()
タームのリンクを変更できる関数。

add_rewrite_rule()
リダイレクトのルールを追加できる関数。

僕が調べた中ですと、add_rewrite_rule()でルール書き換えとけば、カスタム投稿のslugが入ったパーマリンクにできるよーってのが結構ありましたが、それだけですと、 get_the_term_list()でリストを生成している場合はうまくリンクが生成されないかと思います。

解決法としては、やはり両方書くってことになります。

term_link()とadd_rewrite_rule()の役割

書き方は他のところでたくさん出ていると思うので、一旦割愛(もしかしたらあとで追加するかも)。ということでまとめです。

とりあえず、カスタム投稿の配下にカスタムタクソノミーの一覧を持ってきたい場合は、term_link()add_rewrite_rule()の両方で設定することが必要になります。

https://ocws.jp/{custom-post-name}/{taxomomy}/{term}/

それぞれの役割と書く内容については下記をご参考に!

add_rewrite_rule()
<カスタムタクソノミーのリライトルールを追加。>
(AというURLの場合はBというURLにリダイレクトしてくださいってやつです。)

term_link()
<表示されるタームのリンクを変更。>
(AというURLの場合はBというURLに改変して表示してくださいってやつです)