WordPressのタイトル出力のデフォルトは「タイトル − サイト名」で、区切りが「−」。
「|」など、変更したい区切り文字にするため、functions.phpに下記コードを記述すると、タイトルのセパレートを変更できる。
/* title出力 */
add_theme_support( 'title-tag' ); //add_theme_supportを有効化
/* titleの区切り文字を「-」から「|」に書き換え */
function rewrite_separator( $separator ) {
$separator = '|';
return $separator;
}
add_filter( 'document_title_separator', 'rewrite_separator' );
タイトルタグのカスタムとかいろいろ
古い(非推奨)書き方
WordPress4.4以降では非推奨になった、wp_titleという関数を使った書き方。
header.phpに記述していた。
<title><?php wp_title( '|', true, 'right' ); ?><?php bloginfo( 'name' ); ?></title>
出力されるHTMLはこんなかんじ。
<title>記事タイトル | サイト名</title>
新しい書き方
今はfunction.phpに記述する。header.phpに「<title></title>」は記述しない。
もしheader.phpに記述すると二重に表示されてしまうので注意。
下記コードを記述すると自動でタイトル表示される。
add_theme_support( 'title-tag' );
これだけの記述だとHTMLでの表示は下記のようになる。
<title>記事タイトル − サイト名</title>
区切りが「−」なのはイヤ!よく見る「|」にしたい!
と思ったら、function.phpに下記コードを追記すればOK。(一番上に記述してるコードと同じ)
function rewrite_separator( $separator ) {
$separator = '|';
return $separator;
}
add_filter( 'document_title_separator', 'rewrite_separator' );
各ページで表示させたいタイトルにカスタマイズ
さらに各ページで表示させたいタイトルにカスタマイズもできる。
トップページでキャッチフレーズを出力しないようにしたり、カテゴリーやタグページ、アーカイブページのタイトルを変更とかとか。
function rewrite_title_parts( $title ) {
if ( is_home() || is_front_page() ) {
unset( $title['tagline'] ); // キャッチフレーズを出力しない
} else if ( is_category() ) {
$title['title'] = '「' . $title['title'] . '」カテゴリーの記事一覧';
} else if ( is_tag() ) {
$title['title'] = '「' . $title['title'] . '」タグの記事一覧';
} else if ( is_archive() ) {
$title['title'] = $title['title'] . 'の記事一覧';
}
return $title;
}
add_filter( 'document_title_parts', 'rewrite_title_parts', 10, 1 );