年別アーカイブのリンクって、こうなってますよね…
https://example.com/2023
これを、ブログの階層に合わせたい!
https:///example.com/blog/2023
functions.php
以下のコードをfunctions.php
に追加することで実現できました。
function custom_rewrite_rules_array($rules){
$newrules = [];
$newrules['^blog/([0-9]{4})/?$'] = 'index.php?year=$matches[1]';
return $newrules + $rules;
}
add_filter('rewrite_rules_array', 'custom_rewrite_rules_array');
function custom_year_link($link){
$wp_home_url = home_url();
$link = str_replace( $wp_home_url, $wp_home_url.'/blog', $link);
return $link;
}
add_filter('year_link', 'custom_year_link');
blog
の部分はブログの階層に。
rewrite_rules_array
rewrite_rules_array
の部分で、年別アーカイブのリンクのリライトルールを追加しています。
year_link
year_link
の部分で、以下のテンプレートコードで得られる年別アーカイブへのリンクを変更しています。
<?php wp_get_archives( 'post_type=post&type=yearly' ); ?>
注意点
注意点としては、このコードでは
https://example.com/blog/[year]
で年別アーカイブにアクセスできるようになりますが、
https://example.com/[year]
も存在したままです。
どちらのリンクでも年別アーカイブにアクセスできます。
この辺を整理するにはさらに追加のコードが必要となるので注意です。
(サイトマップとかはどうなってるんだろうか…後々この辺ちゃんとしたい…)