Follow Us:

ワードプレスの<title>タグの中身を特定の条件下で書き換える方法

ワードプレスのタイトルタグは、バージョン4.1以降wp_head() ※もしくはget_headerd()に含まれて出力されるようになりました。
(古いテーマでは、titleタグをテーマに含んでいることがありますのでワードプレスをアップデートすると2重に出力されることがあるので注意が必要です。)
今回は<title>タグの中身を条件によって変えたり、出力しないようにするなどのカスタマイズをする方法を解説いたします。


wp_headd()で<title>タグを出力しないようにする

最初にwp_headd()で<title>タグを出力しないようにする方法を解説いたします。古いテーマでワードプレスを4.1以上にされた場合、2重にタイトルタグが出力されてしまう場合はwp_head()側で出力されるタイトルタグを抑制しましょう。

テーマフォルダに含まれるfunctions.phpもしくは、任意のプラグイン等のファイルに下記を記載されてください

remove_action( 'wp_head', '_wp_render_title_tag', 1 );

<title>タグの内容を置き換えて出力する

次にタイトルタグの内容を出力前に任意の文字列で置き換えて出力する方法を解説いたします。

テーマフォルダに含まれるfunctions.phpもしくは、任意のプラグイン等のファイルに下記を記載されてください

function wp_custom_title_output( $title )
{
    $newtitle = str_replace("置き換え前の文字列", "置き換える文字列", $title['title']);
    $title['title'] = $newtitle;
    return $title;
}
add_filter( 'document_title_parts', 'wp_custom_title_output' );

こちらのコードの”置き換え前の文字列”, “置き換える文字列”のところをお好きな文字列に書き換えられてください。
これで、タイトルタグに含まれる文字を任意の文字に全頁で置き換えることが可能です。

<title>タグの内容を特定の条件下で置き換えて出力する

下記のコードでは、投稿かつ、単一投稿が表示されるページでのみタイトルタグの内容を置き換えます。

テーマフォルダに含まれるfunctions.phpもしくは、任意のプラグイン等のファイルに下記を記載されてください

function wp_custom_title_output( $title )
{
    if ( is_single() && get_post_type()=="post" ) {
        $newtitle = str_replace("置き換え前の文字列", "置き換える文字列", $title['title']);
        $title['title'] = $newtitle;
        return $title;
    }
    return $title;
}
add_filter( 'document_title_parts', 'wp_custom_title_output' );

if ( is_single() && get_post_type()==”post” ) の部分は単一投稿ページかつ投稿タイプがpostお場合のみ置き換え処理を実行する という意味となります。
“post”の部分をカスタム投稿タイプに変更されるとカスタム投稿タイプのページのみ書き換えするような処理になります。

<title>タグの内容をアーカイブページ(投稿一覧ページ)の表示中のみ変えて出力する

投稿のアーカイブページのみタイトルタグを変更して出力するコードをご紹介いたします。

function wp_custom_title_output( $title )
{
    if ( is_post_type_archive("post") ) {
        $newtitle = str_replace("置き換え前の文字列", "置き換える文字列", $title['title']);
        $title['title'] = $newtitle;
        return $title;
    }
    return $title;
}
add_filter( 'document_title_parts', 'wp_custom_title_output' );

アーカイブページかどうかを判別する式としてis_post_type_archive関数を使います。この場合post(投稿)のアーカイブであるならばタイトルの着替えを実行するという意味になります。
“post”の部分をカスタム投稿タイプのスラッグに書き換えることでカスタム投稿タイプのアーカイブのみ<title>タグの内容を書き換えるようにすることも可能です。

<title>タグの内容をトップページの表示中のみ変えて出力する

最後にホームページ(トップページ)でのみタイトルタグの出力を書き換える方法をご紹介します。

function wp_custom_title_output( $title )
{
    if ( is_front_page() || is_home()  ) {
        $newtitle = str_replace("置き換え前の文字列", "置き換える文字列", $title['title']);
        $title['title'] = $newtitle;
        return $title;
    }
    return $title;
}
add_filter( 'document_title_parts', 'wp_custom_title_output' );

※文字列置き換えではなく、強制的に固定した文字列を出力する場合は?

$newtitle = str_replace(“置き換え前の文字列”, “置き換える文字列”, $title[‘title’]);
の部分を下記のように変更することで固定したタイトルをそのまま出力できるようになります。

$newtitle = "タイトルタグに出力したい固定文字列";

※タイトル部分ではなく、タイトルタグに出力されるサイト名部分を置き換えるには?

$title[‘title’]ではなく、$title[‘site’]を書き換えるとサイト名部分を変えることができます。

WordPressワードプレスのテーマやプラグインの作成、カスタマイズ、スタイルシートの作成などのご依頼ご相談はワードプレスドクターまでお気軽にお送りください


関連タグ:

Wordpress ワードプレス ドクターBlog タグ一覧

© 2015-16. «WP Doctorワードプレスドクター». All right reserved.