WordPress Twenty Twelveでwp_titleを使うとブログ名やページ数が自動出力される

更新

wp_titleは<head>~</head>を記述する際にとても便利な関数です。しかし、Twenty Twelveでは、wp_titleに自動的にブログ名が出力されるアクションがつけられているので、ちょっと注意が必要です。

  1. wp_titleとは
  2. Twenty Twelveではブログ名を自動出力
  3. 区切り線を左側にしているとおかしなことに
  4. Twenty Twelveではページ数まで自動出力
  5. wp_titleからブログ名やページ数を取り除く

wp_titleとは

wp_titleはそのページのタイトル名を返す関数です。普通はheader.phpで大活躍します。
テンプレートタグ/wp title – WordPress Codex 日本語版
でも、ここに書かれている通りデフォルトではブログ名は出力されません。

ですので、ページのタイトルの後にブログ名をくっつけたものをtitle要素としたければ、以下のようなphpを書きます。

<title><? php
$title=wp_title( '|', false, 'right' ).get_bloginfo('name');
echo $title;
?></title

当ブログ「ウェブシュフ」の「CSSカテゴリーのアーカイブページ」の場合、上のphpの実行結果はこうなるはずです。

<title>CSS|ウェブシュフ</title>

Twenty Twelveではブログ名を自動出力

でも、Twenty Twelveでは、

<title>CSS|ウェブシュフウェブシュフ</title>

となってしまうんです。

.get_bloginfo(‘name’)を削除して

<title><? php
$title=wp_title( '|', false, 'right' );
echo $title;
?></title>

のようにすると、以下のようにきちんと表示されます。

<title>CSS|ウェブシュフ</title>

Twenty Twelveでは、wp_titleがページタイトルの後ろに自動的にブログ名をつけてくれるんですね。

区切り線を左側にしているとおかしなことに

そういうわけで、以下のように区切り線が左側に来る使い方をしている場合はおかしな表示になるので注意が必要です。

<title><? php
$title=wp_title( '|', false);
echo $title;
?></title>

出力はこうなってしまいます。

<title>|CSSウェブシュフ</title>

区切り線が左側にあるときは、ページタイトルの前にブログ名を付けてもらえると便利なんですが…。

Twenty Twelveではページ数まで自動出力

さらに、ホームやアーカイブでページ送りを利用している場合、末尾にページ数までつけてくれます。

<title><? php
$title=wp_title( '|', false, 'right' );
echo $title;
?></title>

上記のphpによって、CSSカテゴリーのアーカイブページの2ページ目にでは、以下のように出力されます。

<title>CSS|ウェブシュフ|Page 2</title>

wp_titleからブログ名やページ数を取り除く

wp_titleが自動的にブログ名やページ数を自動的につけてくれるのは、たいていの場合便利だと思います。

しかし、状況によっては「余計なこと」になってしまうかもしれません。

そんな場合は、wp_titleがブログ名やページ数を自動的に出力しないようにすることもできます。

function.php(注意:子テーマを使ってTwenty Twelveをカスタマイズしている方は親テーマのfunction.phpです)の

function twentytwelve_wp_title( $title, $sep ) {
global $paged, $page;
if ( is_feed() )
return $title;
// Add the site name.
$title .= get_bloginfo( 'name' );
// Add the site description for the home/front page.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
$title = "$title $sep $site_description";
// Add a page number if necessary.
if ( $paged >= 2 || $page >= 2 )
$title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) );
return $title;
}
add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );

の直後に

remove_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );

を挿入するとwp_titleがブログ名やページ数を自動的に出力することはなくなります。

注:今回親テーマのfunction.phpに手を加えなければいけないのは、カスタマイズしようとしている関数が、親テーマでもともと定義されていたものだからです。

WordPress Twenty Twelveでwp_titleを使うとブログ名やページ数が自動出力される」への1件のフィードバック

  1. CHACO

    大変勉強になります!
    しかし1点うまくいかない事がありました。

    >wp_titleからブログ名やページ数を取り除く

    このお話についてなのですが、この通り設定をするとブログのトップページのタイトルがサイトのアドレスになってしまいます。
    トップページなどはそのままで、投稿記事に関してのみサイトのタイトルを非表示にする事はできないのでしょうか?

コメントは停止中です。