【WordPress】カスタム投稿タイプの月別アーカイブをパーマリンクを書き換えて対応

カスタム投稿タイプ記事の月別アーカイブの一覧を作ろうと思ったらパーマリンクがどうやっても意図した通りならず、結局それだけでほぼ1日費やしてしまいました。
実現したかったことは、サイドバーの月別アーカイブのリンクをクリックしたらその月のアーカイブ一覧のページを表示するというシンプルなものだったのですが、これを実現することが簡単には行かなかったのです・・・。

まずは、サイドバーのウィジェットをカスタム投稿タイプでも利用できるようにする「Custom Post Type Widgets」を使ってウィジェットを作成。次に「Custom Post Type Permalinks」をインストールして、パーマリンクを設定したのですが、なぜか/news/news/date/2016/12といった具合に「news」が続けて表示されていまい、リンクをクリックすれば当然そんなページはないと404ページに飛ばされてしまい該当ページを表示することができませんでした。

「Custom Post Type Permalinks」プラグインを使わなければ「news」が続けて表示されることはないのですが、今度はエントリー名がパーマリンク設定のカスタム構造を「post_id」としても「/news/news/date/2016/12/これはテスト記事です」といった具合にポストネームで表示してしまい日本語まじりの残念なURLが生成されてしまいました。こちらが立てばあちらが立たずで問題は一向に解決せず泥沼に・・・。

あれこれ試した結果、下記の方法で解決しました。

  • カスタム投稿タイプに日付ベースのパーマリンクを追加してくれる「Custom Post Type Rewrite」プラグインをインストール
  • パーマリンク設定をカスタム構造「/%post_id%」に設定
  • function.phpにカスタム投稿タイプ(ニュース/スタッフブログ)の投稿記事タイトルを投稿IDに書き換える設定を追記

function.phpに追記した一文。

かなり手こずりましたが、月別アーカイブのURLもダブることなく表示され、記事のパーマリンクも投稿IDで表示されるようになりました。

壁にぶつかると当たり前のように1日潰れるし、場合によっては数日つぶれることもあるので正直WPは好きではないです・・・。ググればなんとかヒントが見つかるのがせめてもの救いかな?

投稿日
カテゴリ