投稿カテゴリごとにtitle要素を変更等|WordPress

さて、iPod touch 3rd発表まで2日となりました。相変わらずどうするか迷い中のフジカワです。こんにちは。くそー、iPhoneも新しいチップになってこっそりとモデルチェンジしないかなー。

WordPressのtitle要素まわりをカスタマイズ

WordPressのtitle要素、標準のテーマ(default)だと
「エントリータイトル « ブログタイトル」のような感じになってます。
ソースでいうと、

<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>

です。

で、今回やることは
1.エントリータイトルよりもブログタイトルを先にもってくる(SEO的な突っ込みは今は無し)
2.エントリータイトルとブログの間に入る「«(何て読むんだ?)」を「-(ハイフン)」に変更
3.エントリーのカテゴリ別に、title要素に任意の文字列を差し込む

1.エントリータイトルよりもブログタイトルを先にもってくる

これは簡単。で囲まれた部分を逆にしてあげるだけ。

<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>

<title><?php bloginfo('name'); ?><?php wp_title('&laquo;', true, 'right'); ?></title>

とすれば良いわけです。「«」の場所や向きなど細かい部分はありますが、後で直しましょう。

2.エントリータイトルとブログの間に入る「«(何て読むんだ?)」を「-(ハイフン)」に変更

wp_titleタグを変更します。カッコ内に記述されてる引数の意味は、
’&laquo;’ → 「«」を表示する
true → タイトルを表示する(表示しない場合は「false」と入力)
’right’ → タイトルの右に記号(ここでは) 「«」)を表示する
という意味になってますので、それぞれを
’ – ’→ 「-(ハイフン)」を表示する
true → タイトルは表示するのでこれはこのまま
‘ ’ → デフォルトで記号表示はエントリータイトルの左になるので、引数は空にする
というように変更します。
ちなみに、第2引数、第3引数は共にデフォルトなので、入力しなくても同じ挙動を示します。

<title><?php bloginfo('name'); ?><?php wp_title('-', true, ''); ?></title>

もしくは

<title><?php bloginfo('name'); ?><?php wp_title('-'); ?></title>

このようなソースになります。

3.エントリのカテゴリ別に、title要素に任意の文字列を差し込む

ブログタイトルとエントリータイトルの間にカテゴリ名を入れたい、という場合ですね。例えば
通常では「ブログタイトル – 各エントリータイトル」となるところを、
「ブログタイトル – 各カテゴリ名 – 各エントリータイトル」と表記したい時などには以下作業をします。

<title><?php bloginfo('name'); ?>
<?php
if ( in_category('1') ) {
echo' - カテゴリ1の名前';
} else if( in_category('2') ) {
echo' - カテゴリ2の名前';
} else if( in_category('3) ) {
echo' - カテゴリ3の名前';
}else{
echo'上記に該当しない場合に表示させる文字列(空っぽでも良い)';
?>
<?php wp_title('-', true, 'left'); ?></title>

というように、if節+「in_categoryタグ」を使って、「もしもカテゴリIDが1だったら’カテゴリ1の名前’を表示、カテゴリーIDが2だったら’カテゴリー2の名前’を表示…」とエントリーが属するカテゴリのカテゴリIDによって表示させる文字列を任意に設定できます。
一番最後のelseの部分は、カテゴリ名を表示しなくても良い場合や、個別で入れなくてもまとめて設定できれば良い場合などがある際、最後にまとめて指定すればよいでしょう。
あまりにカテゴリ数が膨大で入力途中で力尽きた場合や、どうでもいいカテゴリ群をまとめたい場合などに活用しましょう。

書いておきながら

こんなエントリーを書いておきながら自分のブログは上記のようになっていないという恐ろしさですが、
そのうち気が向いたらやってみます。
大丈夫、上記どおりやれば多分機能するはずです。
あ、文字コードに気をつけてくださいね。
ではでは。

■in_categoryについての詳細
テンプレートタグ/in category – WordPress Codex 日本語版

■wp_titleタグについての詳細
テンプレートタグ/wp title – WordPress Codex 日本語版

コメントを残してみる

コメント