WordPress 4.1 から タイトル( <title>~</title> )を表示する方法が変わりましたが、WordPress 4.4 からは さらに従来のタイトルの内容を生成する wp_title関数 を使う方法が非推奨になり、新しい関数「wp_get_document_title()」が登場しました。
これを利用する方法は簡単です。 テーマの functions.php に「add_theme_support( ‘title-tag’ );」を記述するだけです。
内部では 新しい関数「wp_get_document_title()」が タイトルの内容を いい感じに生成し、wp_headフックを経由して、<title>~</title> が追加されます。
※テーマの header.php のファイルに <title>~</title> を追加しないようしてください。(2重表示になります)
サンプル
function nendebcom_theme_slug_setup() { add_theme_support( 'title-tag' ); } add_action( 'after_setup_theme', 'nendebcom_theme_slug_setup' );
※functions.php に add_action( ‘after_setup_theme’~ がすでにあれば その中に「add_theme_support( ‘title-tag’ );」を入れましょう。
追加されたアクションフィルター
しかし、今までは 「wp_title()」で生成される内容を変更するのに wp_title関数のアクションフィルター「add_filter( ‘wp_title’, ~」を使ってましたが、新しい関数「wp_get_document_title()」を利用している場合は 「add_filter( ‘wp_title’, ~」が効かなくなります。
もし、タイトルの内容を変更したい場合は、以下の追加されたアクションフィルターを使うようにしてください。
pre_get_document_title | short-circuits wp_get_document_title() if it returns anything other than an empty value. |
document_title_separator | filters the separator between title parts. |
document_title_parts | filters the parts that make up the document title, passed in an associative array |
pre_get_document_title
タイトル文字自体を全部、置き換えます。
/* * タイトル文字を変更する。 * * @return string title. * * @since WordPress 4.4.0 * License: GPLv2 or later */ function nendebcom_theme_name_wp_title( $title ) { /* ここで、いろいろ $title内を変更 */ return $title; } add_filter( 'pre_get_document_title', 'nendebcom_theme_name_wp_title' );
※公式な情報ではありません。
document_title_separator
タイトル文字内のセパレーターを変更します。(デフォルトは「-」です)
/* * タイトルの区切り線を | にする * * @since WordPress 4.4.0 * License: GPLv2 or later */ function nendebcom_title_separator( $sep ){ $sep = '|'; return $sep; } add_filter( 'document_title_separator', 'nendebcom_title_separator' );
※公式な情報ではありません。
document_title_parts
タイトルをパーツごとに変更する事ができます。
返す $title は配列になります。
/* * タイトル文字をパーツごと変更する。 * * @since WordPress 4.4.0 * @return array title. * * License: GPLv2 or later */ function nendebcom_document_title_parts( $title ){ /* ここで、いろいろ (配列)$title内を変更 $title['title'] = ''; //Title $title['page'] = ''; //Page number $title['tagline'] = ''; //Site description $title['site'] = ''; //Site title */ return $title; } add_filter( 'document_title_parts', 'nendebcom_document_title_parts' );
通常は$title[‘title’] だけ変更するかと思われます。
$title[‘title’]を コア側ではどのようにしてデータを設定しているかは wp-includes/general-template.php の wp_get_document_title()関数の所を参考にしてください。
※公式な情報ではありません。
スポンサードリンク
既存の add_filter( ‘wp_title’, ~ でも対応
「wp_get_document_title()」は とてもよくできています。サイトタイトルやページ番号なども付けてくれるので wp_title関数の時のように「add_filter( ‘wp_title’, ~」を使ってタイトルの内容を追加する必要がなくなりました。
「add_filter( ‘wp_title’, ~」が効かなくなります。と書きましたが、これで正解なのかもしれません。
もし、タイトルの内容が今まで使っていた「add_filter( ‘wp_title’, ~」の方を使いたい場合は、そのコードに「add_filter( ‘pre_get_document_title’,~」を 付け足す事で4.4も4.4未満でも どちらでも動作するようになります。
/* * タイトル文字を変更する。 * * @return string title. * * @since WordPress ~4.3 * License: GPLv2 or later */ function nendebcom_theme_name_wp_title( $title, $sep='', $seplocation='' ) { /* ここで、いろいろ $title内を変更 */ return $title; } //WordPress ~4.3 add_filter( 'wp_title', 'nendebcom_theme_name_wp_title', 10, 3 ); //WordPress 4.4~ add_filter( 'pre_get_document_title', 'nendebcom_theme_name_wp_title', 10, 3 );
※wp_title と pre_get_document_title とで、引数の数が違いますので注意してください。( $sep=”, $seplocation=” としときましょう。)
追記 11/12
wp_title の「非推奨」は取り下げて 当分の間復活されたようです。しかし「add_filter( ‘wp_title’, ~」が効かなくなるのは変わりませんので対応は していきましょう。
Since WordPress 4.1, add_theme_support( ‘title-tag’ ); has been the recommended way of outputing a title tag for themes. Now, a year later the wp_title function has been officially deprecated. Take a look at this post if you want to see all the great new filters you can use to modify title tags.UPDATE 12 November ? wp_title has been reinstated for the time being. It is a zombie function. add_theme_support( ‘title-tag’ ); remains the recommended way to insert a title tag into your theme, however there were use cases for wp_title that were not accounted for in the original deprecation decison
https://make.wordpress.org/core/2015/11/11/wordpress-4-4-field-guide/より
まとめ
現在、WordPress4.4 beta版なので 今後、もっといい方法が出てくるかもしれません。
既存のテーマやプラグインでの対応はこれからになると思います。将来「タイトル表示がおかしい?」てなった時 この記事を思い出してください。
参考
Make WordPress Core Document title in 4.4
https://make.wordpress.org/core/2015/10/20/document-title-in-4-4/
WordPress Codex Title Tag
http://wpdocs.sourceforge.jp/Title_Tag
WordPress Codex テンプレートタグ/wp title
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/wp_title
Make WordPress Core Title Tags in 4.1
https://make.wordpress.org/core/2014/10/29/title-tags-in-4-1/