WordPressでカテゴリーページのタイトルを親カテゴリー付きで表示する方法
WordPressのカテゴリーページのタイトル出力はthe_archive_title関数が便利です。しかし、この関数が表示してくれるのは子カテゴリー名のみ。親カテゴリー名を付けて表示したいと思ったら、少し面倒になってしまいます。
そこで今回は、カテゴリーページのタイトルを親カテゴリー名付きで表示する方法です。
~ 目次 ~
今回やりたい事
少々ややこしいので、今回やりたい事の説明をしておきます。
例えばこのブログのカテゴリーは、親カテゴリー「WordPress」があり、子カテゴリーとして「カスタマイズ」や「ショートコード」などがあります。
子カテゴリー名を決める時に、あらかじめ親カテゴリーの名前を付けて「WordPressカスタマイズ」などと命名しておけば、子カテゴリーページのタイトルもWordPressカスタマイズになります。しかし、それはちょっと無駄が多くて耐えられません。そもそも親子関係を作る必要あるのか?と思ってしまいます。
カテゴリーページのタイトルがわかりづらい…
一方で、カテゴリーページのタイトルは子カテゴリー名のみとなってしまいます。
カテゴリーページに実際に移動してみると、いきなりタイトルに「カスタマイズ」あるいは「カテゴリー:カスタマイズ」と表示されてしまいます。これでは「何のカスタマイズやねん!」って感じですよね。
ユーザービリティーを考えるのなら、ここは「WordPressカスタマイズ」と、親カテゴリー名を付けて表示してほしいと思います。うっかりカテゴリーページに移動してしまったユーザーは、サイト内で迷子になってしまうかもしれません。
今回の記事は、こういった「カテゴリーページで表示されるタイトル」を、親カテゴリー名付きに変更する方法です。
※カスタマイズして、タグやタクソノミーに親子階層を持たせている事もあるかもしれませんが、今回はそういったケースは対象としていません。デフォルトで存在する「カテゴリー」のアーカイブページでのタイトルを親カテゴリー名付きに変更する方法です。
functions.phpで一括して書き換えるコード
前置きが長くなりましたが、実際にカテゴリーページのタイトル表示を親カテゴリー付きに変更するコードです。コピーして、使用中のWordPressテーマのfunctions.phpに貼り付けましょう。最後の行で問題ありません。最後の行に「 ?> 」と記述された行がある場合は、その前に貼り付けます。その行を消さないように注意して下さい。
1 2 3 4 5 6 7 |
function add_parent_archive_title($title){ if(is_category()){ return get_category_parents(get_query_var('cat'),false,''); } return $title; } add_filter('get_the_archive_title','add_parent_archive_title'); |
テンプレート内に記述する場合のコード
テンプレートを直接編集したい場合は、カテゴリーページのタイトルを出力している部分を直接書き換えましょう。基本的に下のコードで「親カテゴリー名+カテゴリー名」が取得できます。これをechoなどを使って出力します。
1 |
echo get_category_parents(get_query_var('cat'),false,''); |
よくあるパターンでの書き換え例
カテゴリーページのタイトル出力でよく使われるコードは下のような感じです。この例は子カテゴリー名の前後にh1タグを付けて出力するコードです。
1 |
the_archive_title( '<h1 class="hoge">', '</h1>' ); |
この場合は上の行を、下のコードと書き換えます。
1 |
echo '<h1 class="hoge">'.get_category_parents(get_query_var('cat'),false,'').'</h1>'; |
ページタイトルに合わせてtitleタグも変えるコード
ページタイトルを変更したら、titleタグも気になりますね。上のページタイトル変更に合わせてhead内のtitleタグも変更するには以下のコードをfunctions.phpに記述します。
1 2 3 4 5 6 7 |
function change_category_titletag($title){ if(is_category()){ $title['title']=get_category_parents(get_query_var('cat'),false,''); } return $title; } add_filter('document_title_parts','change_category_titletag',9999); |
これでカテゴリーページのみ、titleタグが親カテゴリー+子カテゴリーに変更されます。セパレーターやサイト名部分などは変更されません。
※このコードはSEO系プラグインなどでタイトル変更を設定していると機能しない場合があります。その場合はプラグインを停止するか、タイトル変更機能を無効にして下さい。
最後に
カテゴリーページのタイトル、いい感じにカスタマイズできましたか?
タイトルなだけに、H1タグが使用されている場合がほとんどです。SEOやユーザービリティーも考えて、きっちりと思い通りに表示しておきたいですね。