wordpress4.1からadd_theme_support('title-tag')を使えばtitleタグが自動生成されますが、ちょっと使えないな〜と思うところがあります。(wordpress4.4では不具合も解消され使用する事にしました。)
使わない理由
それは、アーカイブの「年」のtitleタグを出力すると「Notice: Undefined index: 00 in 中略/wp-includes/locale.php on line 271」というエラーが出てしまいます。「Notice」レベルのエラーですが、私としてはあまりいい感じがしません。
エラーの出どころを解析したところ、wp_title関数内に不具合がありました。年の値しかないのに月の値を見に行っていてるのが原因でした。add_theme_support('title-tag')でも内部では、wp_titleを使用しています。
それともう一つの理由が、年月のタイトルが「10月 | 2015 | 」となり、ちょっとカッコ悪いかなと思っています。私としては、「2015年 10月 | 」と表示して欲しいところです。
そういう2つの理由でadd_theme_support('title-tag')は、使わない方でいこうと思います。年と月の時は自分で作成して、その他はwp_titleを使用しようと思います。以下が変更したソースになります。
header.phpに以下のように記述して、追加した関数を呼びます。
<title><?php my_title(); ?></title>
functions.phpに以下の関数を追加しました。
function my_title() {
if (is_archive() && (is_year() || is_month())) {
$my_year = get_post_time('Y');
$str = $my_year .'年 ';
if (is_month()) {
$str .= (get_post_time('n') .'月 ');
}
$str .= ' | ' . get_bloginfo('name');
} else {
$str = wp_title('|', false, 'right') . get_bloginfo('name');
}
echo $str;
}
コメントを残す