テーマのfunctions.phpに次のような記述を追加することでおおむね希望通りになるかと思います。
function custom_rewrite_rules() {
add_rewrite_rule( '^author/([^/]+)/([0-9]{4})/([0-9]{1,2})/?$',
'index.php?author_name=$matches[1]&year=$matches[2]&monthnum=$matches[3]',
'top' );
}
add_action( 'init', 'custom_rewrite_rules' );
なおこのコードだけですとルールが保存されないので、「設定」-「パーマリンク」で
「変更を保存」ボタンを押す必要があります。
add_rewrite_rule関数の詳しい使い方はcodexなどでご確認ください。
>tmatsuur (@tmatsuur)さま
早速、お教えくださりありがとうございます。
試してみたところ、
https://hoge.jp/author/ユーザー名/2019/05/
上記URLを叩いてみたところ、以下のページの内容と変わらず、うまく動作しませんでした。
https://hoge.jp/author/ユーザー名
試しに、テンプレートファイルの「author.php」を削除してみたところ、「archive.php」のテンプレートファイルが読まれ、意図する動作になりました。
author.phpが優先されて読み込まれてしまう状況なのですが、
arcive.phpを優先的に読み込む、もしくは指定したユーザーの該当期間の投稿を表示させるための方法はありますでしょうか。
URLが https://hoge.jp/author/ユーザー名/2019/05/ の場合はauthor.phpではなく、
archive.phpで対応したいということでしょうか。
テーマ内のテンプレートには優先度があり、arcive.phpよりもauthor.phpが高くなります。
現状どのようなauthor.phpとarchive.phpがどのような内容になっているのかわかりませんが、
author.phpを使用されているのであればauthor.php内で処理を切り分ける方が合理的だと思います。
1.現状のarchive.phpで https://hoge.jp/author/ユーザー名/2019/05/ の際に
コンテンツ部分を出力しているコードをauthor-date.phpに切り出す。
2.現状のauthor.phpのコンテンツ部分を出力しているコードを author-common.php に
切り出す。
3.author.phpのコンテンツ部分出力部分は、次のようなコードで処理を振り分ける。
if ( is_date() ) {
get_template_part( 'author', 'date' ); // author-date.phpを読み込む
} else {
get_template_part( 'author', 'common' ); // author-common.phpを読み込む
}
教えていただいた方法で無事に解決する事できました。
add_rewrite_rule関数の存在自体は知っていたのですが、何に使うか分かっておらず、この機会にしっかりと勉強していきたいと思います。
本当にありがとうございました。
こちらのスレッドは、解決済みとさせていただきます。