WordPressでWebサイト制作をしていると
ページごとにtitleタグのテキストを変えなきゃいけない…!
という状況に出くわすことがよくあります。
方法はいくつかありますが、この記事では
functions.phpにコードを記述して
ページごとにtitleタグの内容を変更する方法
について解説をしていきます。
- titleタグが自動的に設定されるようにする方法
- titleタグの内容を任意のテキストに変更する方法
- titleタグの区切り文字を変更する方法
- titleに自動設定される「キャッチフレーズ」や「サイト名」を除去する方法
WordPressだとheader部分の区別化にひと手間必要
WordPressでは基本的にheader部分はheader.phpによって共通化されています。
そのため、「ページごとに一部分だけ内容を変えたい」という状況に遭遇すると、ひと手間必要になることが多いです。
今回のtitleタグの内容をページごとに変えたいという状況もその一例で、この記事がどなたかの役に立てばという気持ちです。
【コード】functions.phpにコードを記述してページごとにtitleタグの内容を変える
今回の実装のポイントは次の通りです。
- 既存のheadタグからは予めtitleタグを削除しておく
- functions.phpに「headタグ内にtitleタグが自動で挿入されるようにするためのコード」を記述する
- functions.php内で、「ページ判定を行い、ページごとに出力するtitleの内容を変更するためのコード」を記述する
functions.phpの編集方法がご不明な場合は、こちらの記事をご覧ください
【コード】functions.php内に記述するコード
headタグ内にtitleタグが自動で挿入されるようにするためのコード
function mytheme_ini() {
add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'mytheme_ini' );
実は、単純に「titleタグが自動的に設定されればOK」ということであれば、上記のソースコードをfunctions.phpに追記するだけで大丈夫です!
ページごとに出力するtitleの内容を変更するためのコード
function 任意の関数名($title){
$title['title'] = 下記のページ判定から漏れたページに適用したいタイトル;
if ( ページを判定する条件 ){
$title['title'] = タイトル値 ;
}
return $title;
};
add_filter('document_title_parts', '任意の関数名');
WordPressに用意されているフィルターフック「document_title_parts」を利用して、出力されるtitleタグの内容を変更しています。
使用例
function my_document_title_parts($title){
if(is_home() || is_front_page()) {
$title['title'] = 'トップページ';
} elseif( is_page('company') ) {
$title['title'] = '会社概要';
} elseif( is_page('recruit') ) {
$title['title'] = '採用情報';
} elseif( is_page('policy') ) {
$title['title'] = 'プライバシーポリシー';
}
return $title;
};
add_filter('document_title_parts', 'my_document_title_parts');
この例では以下のような判定により、ページごとのtitleタグの内容を任意のものに変更しています。
判定内容
- is_home()とis_front_page()でトップページを判定
- is_page(‘ スラッグ ‘)で各固定ページを判定
titleタグから不要な情報を除去したい場合
ただ、上記でtitleタグを自動設定する場合、実は以下の画像のようにタイトルの後ろに自動的に「 – サイト名」といった文字列が追加される形になってしまいます。
自動的に追加されてしまう情報
- トップページの場合……キャッチフレーズ
- その他のページの場合……サイト名
このような状態で問題が無い場合もあれば、「サイト名は消したい!」といった場合もあるかと思います。
そこで以下より
- 「区切り文字」を変更する方法
- サイト名を除去する方法
についてそれぞれ解説をしていきます。
titleの「区切り文字」を変更する方法
titleの「区切り文字」を変更したい場合は、以下のコードを使用します。
function 任意の関数名($separator) {
$separator = '|'; // 好きな区切り文字を設定する
return $separator;
}
add_filter('document_title_separator', '任意の関数名');
区切り文字を「|」に変更
titleからサイト名を除去する方法
titleからサイト名を除去する場合には、以下のコードを使用します。
function 任意の関数名($title){
if( is_home() || is_front_page() ) {
unset( $title['tagline'] );
} else {
unset( $title['site'] );
}
return $title;
};
add_filter('document_title_parts', '任意の関数名');
タイトルの後ろから「サイト名」を除去
- トップページではtitleタグにキャッチフレーズ($title[‘tagline’])が挿入され、
- それ以外のページではサイト名($title[‘site’])が挿入されるため、それぞれをunset()関数で削除している
まとめ
以上がページごとにtitleタグの内容を変更する方法でした!
WordPressでWeb制作をしているとページごとにtitleタグの内容を変えなければいけないことが頻繁にあります。
この記事がお役に立ったなら何よりです!
コメント