【WP】wp_get_archivesがリンク先エラーになる

記事の年別、月別、週別などの記事一覧のアーカイブリンクを生成する wp_get_archives で出力したリンクがエラーページ(404)になる…!というときの解決方法。

原因

まとめると、以下の時に起こるようです。

  • カスタム投稿(例:「memo」)のアーカイブを生成しようとしている
  • パーマリンクを「/memo/%post_id%」に設定している

以上の時にアーカイブページのURLが記事ページとして判定されるため、エラーとなるようです(デフォルト投稿の時は自動でWPが回避してくれる)。

解決方法

パーマリンクが「/memo/%post_id%」のときは「/memo/date/%post_id%」でアーカイブページにアクセスできるそう(参考サイトを参照してね)なので wp_get_archives で生成されるリンクを書き換えます。

$args = array(
  'echo' => false,
  'post_type' => 'memo'
);
$archive_list = wp_get_archives( $args );
$archive_list = str_replace('/memo/', '/memo/date/', $archive_list);
echo $archive_list;

参考