前回「投稿をカテゴリごと/blogディレクトリに分けるのは大変だ!」と投稿しましたが、
こちらようやく解決いたしましたのでご報告いたします。
そもそもパーマリンクが邪魔をする
前回はSEOの観点から、
投稿とカテゴリ設定をブログページとして扱い、
カテゴリは「ドメイン/blog/カテゴリ名/」
投稿は「ドメイン/blog/カテゴリ名/投稿名/」
にしたい!と思っており、
パーマリンクで投稿の設定を「blog/」から始まるようにし、
そしてカテゴリベースも「blog」と設定したら、バグを引き起こした……と記載しました。
その現象から逃れるため、カテゴリ「blog」を親としてから子カテゴリを作り、
カテゴリベースは「.」としました。
しかしこうするとなぜか今度はカテゴリページは表示されず、代わりに同スラッグ名の固定ページに飛ばされます。
仕方なく「blog」を親としたカテゴリのための固定ページを、
カテゴリを新規作成するごとに固定ページを作らねばならなくなりました。
これは非常に面倒くさいやり方です。
カスタム投稿もうまく動かない……と思い込んでいたのですが……
ようやく見つけました!
カスタムポストを利用する
投稿とカテゴリはパーマリンクに全てを握られているので使わずに行きましょう。
カスタムポストだけがこの状況を打破してくれます。
カスタム投稿タイプのURLに階層構造を持たせる[WordPress]
SEO的観点からカスタムタクソノミー(カスタム分類)のスラッグをカスタム投稿タイプと同じにする
この辺りを参考にさせていただきました。
このwordpressではプラグインCPTは使用せずfunction.phpのみで解決しましたが、大変参考になりました。
ありがとうございました。
ですがカスタムタクソノミーのページやリンクもちゃんと「/blog」に入っていて欲しいので、
カスタマイズをした内容をざっくりですが書いて行きます。
まず同じスラッグ名に設定する
カスタムポストとカスタムタクソノミーは同じスラッグ名にします。
参考ページにもある通り、パーマリンク設定には一手間かけなければなりませんのでそのあたりもお忘れなく。
これで階層が同じ扱いになります!
もし制作途中でバグを起こす様であればパーマリンクを設定し直してみましょう。
記事をお引越し
投稿の記事はカスタムポストへお引越しです。
この時はまだ4記事くらいしかなかったので手動で移動させました。
50記事以上あったらきっとcsvなどを考えていたと思いますが今回は割愛します。
アーカイブページを作る
次にカスタムタクソノミーのためのカテゴリページを作ります。
archives.phpでカテゴリもタグも作れます。
パンくずナビやカテゴリ一覧のリンクはget_term_linkを使用しない
実のところ同じスラッグ名はやはり競合するのか、
カテゴリページへのリンクのみget_term_linkなどを使用するとスラッグではなく設定名の方に飛ばされます。
(はじめは直すこともできないと思い込んで.htaccessでリダイレクトさせたりしてました……)
もちろんこのページは存在しますしページそのものにバグは起きていませんが、
しかしやりたいこととしてはブログ投稿の全てが「/blog」内に存在することです。
そこで!代わりに「ドメイン」と「カスタムタクソノミースラッグ」を別々で準備して設定します。
「ドメイン/blog/カスタムタクソノミースラッグ」ページ、ちゃんと存在してます!
階層を持たないタクソノミーを作ってタグとする
上記などで紹介されている内容はカテゴリがメインです。
こちらではもともとタグを使用しており、関連ページなども制御していましたから、
カテゴリだけではなく、階層無しのタクソノミーを本来のタグとして扱いました。
投稿の一覧はカスタムポストの一覧へ
当然ですが表示される「投稿一覧」は全て表示されなくなりました。
「投稿」の中身は全てゴミ箱へ行ってしまいましたので当たり前ですね。
このあたりはループさせるarrayの設定を「カスタムポスト」用に変更します。
blogディレクトリのブログ完成!
これでようやくブログ投稿はblogディレクトリに内包されました。
他、カスタムポストに著者の情報を追加するなど、細かいところも復活させたりしましたが、
アイキャッチ、サムネイルのあたりは何も触っていません。
投稿の頃の設定のままでいけるようですね。助かりました……