月別アーカイブのタイトル表示が気に入らなかったのでテンプレートファイルをカスタマイズしてみた。

月別アーカイブを表示すると「月:2021年7月」と表示されます。これは使用テーマによっても異なるかな〜と思います。この部分を編集するにはどうしたらいいか?ということで、まずはQueryMonitorで使用中のテンプレートファイルをチェック。該当ファイルを探し、表示している部分がどんな記述になっているか確認します。(今回使用しているテーマはbusinesspressです)

the_archive_title('<h1 class="page-taitle">',</h1>);

the_archive_titleタグを呼び出して、page-title というクラスで装飾しているようです。

the_archive_titleをうまいこと編集したい・・・ということでCodexでタグについて調べました。

https://wpdocs.osdn.jp/関数リファレンス/the_archive_title

クエリの内容に基づいてアーカイブのタイトルを表示します。ターム(カテゴリー、タグ、カスタムタクソノミー)、日付、投稿タイプ、投稿フォーマット、作成者などのアーカイブページが対象です。

値を取得するには get_the_archive_title() を使ってください。

https://wpdocs.osdn.jp/関数リファレンス/the_archive_title

もう少し下を見てみると、パラメータの説明もあり、<h1 class~>がついて動作している理由もわかります。

 get_the_archive_title() で必要な情報を取得して、表示させるといいのかな〜。

the_archive_title() は wp-includes/general-template.php にあります。

https://wpdocs.osdn.jp/関数リファレンス/the_archive_t

とあるので、見てみました!

ほとんど分かりませんw あとはすでに解決しているブログ記事を参考にすることにしました。
すると、大きく2通りの方法を見つけました。

青の方はいくつか分岐させて表示したい時に有効なようです。

結果はこちら

コードも載せておきます!class名などは適宜変更してください。

           add_filter( 'get_the_archive_title', function ($title) {
                if (is_category()) {
                $title = single_cat_title('',false);
                } elseif (is_tag()) {
                $title = single_tag_title('',false);
                } elseif (is_tax()) {
                $title = single_term_title('',false);
                } elseif (is_post_type_archive() ){
                $title = post_type_archive_title('',false);
                } elseif (is_date()) {
                $title = get_the_time('Y年n月'.'の記事一覧');
                } elseif (is_search()) {
                $title = '検索結果:'.esc_html( get_search_query(false) );
                } elseif (is_404()) {
                $title = 'ページが見つかりません';
                } else {
                }
                return $title;
                });

                the_archive_title( '<h1 class="page-title">', '</h1>' );
if(is_month()) {
                    //月別アーカイブページで表示するタイトル
                    echo '<h1 class="page-title">';
                    echo the_time("Y年n月").'の記事一覧';
                    echo '</h1>' ;
                
                  } else {
                    //その他のページで表示するタイトル
                
                  }

WordPressのテンプレートタグを理解するには、自分でテーマを作ってみるのがいいのかな〜と思うこの頃です。