共通のタクソノミーを使う場合のタームアーカイブ

ワードプレス関数ファイルカスタム投稿タイプタクソノミータグ、カテゴリータームプラグイン

共通のタクソノミーを使う場合、「Custom Post Type Permalinks」が好相性、というお話。

 

異なる投稿タイプ間で共通のタームを使いたい場合、「複数の投稿タイプで、共通のタクソノミーを使う」で書いた方法で実現できますが、タームのアーカイブも共通化されてしまいます。当たり前ですが。

困る例

例えば、投稿タイプ「求人情報」と「スタッフ紹介」でタクソノミー「施設」を共有している場合。


「求人情報」投稿タイプ

└ 「施設」タクソノミー

└ 「東京タワー」ターム


「スタッフ紹介」投稿タイプ

└ 「施設」タクソノミー

└ 「東京タワー」ターム


このとき、アーカイブ「東京タワー」のURLは「/施設/東京タワー/」となります。

タグリストで「get_term_link()」などを使った場合でも、同様のURLになると思います。

結果、「求人情報」と「スタッフ紹介」が串刺しで表示されます。

こういう結果が必要な場合もあると思いますが、「求人情報」一覧からタグを選んだら、やはり「求人情報」のアーカイブを表示するのが自然と思います。

投稿タイプを明示する

では、URL「/求人情報/施設/東京タワー/」にアクセスするとどうなるか。

404になります。

これを手っ取り早く解決するには、プラグイン「Custom Post Type Permalinks」がお手軽。

有効にした後、パーマリンク設定の下の方に現れるオプションを両方チェックします。

  • カスタマイズされたカスタムタクソノミーのパーマリンクを使用する。
  • カスタムタクソノミーのアーカイブに、 post_typeクエリーを追加

こうすることで、URL「/求人情報/施設/東京タワー/」は、「求人情報」の「東京タワー」タームのアーカイブを表示するようになります。

ポピュラーなプラグインなので、大事故などは無いと思いますが、サーバー環境に依存するような気もします。

串刺しが必要な場合

逆に、串刺しの表示結果が必要な場合、URL「/施設/東京タワー/」でOK。

タグリストも変えてくれる

get_term_link()などでタグリストを表示している場合、こちらも細工が必要かと思ったら、勝手にURL変えてくれました。

「home_url( ‘/’ ) . $post_type . ‘/’ . $tax . ‘/’ . $term->slug」みたいな書き方は必要ないようです。

なので、テンプレートの書き換えは恐らく必要ないと思いますが、固定ページやウィジェットなどへの直書きURL、ナビゲーションメニューのカスタムリンクなどは要注意です。

テンプレート次第?

ここまでの話は、カスタム投稿のテンプレートを1つにまとめている環境での例です。

投稿タイプごとにテンプレートを分けている場合などはどうなるかわかりません。

 

また、URLを変更するので、既存サイトには使いにくいですね。

新規サイトや、SSL化するタイミングなど、サイトマップが変わっても構わない場合のご参考に。