こんにちは。
記事がばーっと表示されるページを「一覧ページ」と呼ぶか「アーカイブページ」と呼ぶか毎回悩む今日この頃です。
アーカイブページはありとあらゆるWebサイトにおいてほぼ欠かせない存在だと思います。
という事は、そんなアーカイブページのタイトルを表示する関数はありとあらゆるWebサイトにとって欠かせない存在と言えます。
今回はありとあらゆるWebサイトに欠かせないアーカイブページのタイトルについて学んだ事を綴っていきます。
タイトルの表示・取得
the_archive_title()はアーカイブのタイトルを表示します。
このブログにはカテゴリー毎のアーカイブページがありますが、そちらでもこの関数を使用しています。
パラメータ
$before(文字列)
…タイトルの直前に出力する文字列です。
$after(文字列)
…タイトルの直後に出力する文字列です。
使用例
カテゴリー名が「ブログ」のアーカイブページタイトルを<h2>タグで囲って表示します。
the_archive_title('<h2>', '</h2>');
HTMLソースコードで以下の様に表示されます。
<h2>カテゴリー: ブログ</h2>
タイトルの取得
タイトルを表示せずに取得する場合はget_the_archive_title()を使用します。
以下の例では$titleにタイトルを代入します。
$title = get_the_archive_title();
要らない文字の削除
the_archive_title()を一度使用すると分かるのですが、タイトル名の前に「カテゴリー: 」や「月: 」などあまり表示したくなさそうな文字列が付いてきます。
これらは関数の引数で表示・非表示を指定できません。
タイトル名の前の「カテゴリー: 」や「月: 」などが不必要な場合はフィルターフックを使用します。
functions.phpに以下を追記↓
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);
}
return $title;
});
まとめ
今回は本館でも使用している関数やフィルターフックについて綴っていきました。
タイトルについては、アーカイブページのテンプレートファイルに直接書いて表示する方法もあると思いますが、関数を使用すれば使い回しもできてコードも短くなり便利だと思います。
この記事を読んでいただきありがとうございました。
あなたのお役に立てれば幸いです。ではまた。