WordPress 4.1以降のtitle要素でTOPページ表示時にdescriptionを消す:メモ

悩み
悩み

そういえばと調べてみたらあったので、自分用にメモ。

今後この辺に対する設定が追加されそうな気もしますが、現時点で対応するなら以下の方法となるようです。

[2015/12/20追記あり]

[2015/12/20追記]フィルターの導入とフックの変更

WP4.4以降で追加があったようですが、以下の情報がくわしいので一読をお勧めします。

基本的には上記サイトをご覧いただくのが良いのでここに書く必要はないのですが、自分用メモ的に追加されたフィルターなどを、上記サイトで参照として挙げられている「Document title in 4.4」から引用します。

  • ‘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.

フィルターができると嬉しいですね。
なお、wp_titleにフックできなくなるそうで、上記のpre_get_document_titleを使う形になるとのこと。プラグインの影響が出る箇所ですので注意したいところです。

TOPページではtitleの横にdescriptionがつく

WordPress4.1以降ではtitleの表示の仕方が変りましたが、そこ自体は今回の本題ではないので詳細は以下参照。

なお、上記WP4.4関連の記事では、titleが非推奨となるとも書かれています。
具体的には以下のようなおなじみのタグであり、この記述をheader.phpには記述しなくなります。


<title><?php wp_title(); ?></title>

特に書く必要もありませんが、以前と変わらずwp_titleにフックできますから、All in One SEO Packなどのプラグインでタイトルを書き換えている場合、書換えの効果はちゃんとあります。

[2015/12/20追記]
wp_titleにはフックできなくなるそうです。

titleの表示が簡単になったと思ってはいますが、反面見えない所で分岐が入っていて、そこに手を入れようとすると少し手間がかかるようになった印象です。

今回に関して言えば、titleタグに表示される要素が、TOPページの場合に以下のようになっている点が困りました。

  • サイト名 | description

タイトルはサイト名だけにしたい場合にはdescriptionが不要なので、descriptionとセパレータの「|」を消したいというのが趣旨です。

コード

コード自体は、下記フォーラムの返答で書かれていたもので実現できました。


add_filter('wp_title','my_remove_description', 10, 2);

function my_remove_description( $title_tag, $sep ) {

  $site_description = get_bloginfo( 'description' );
  return str_replace( "$sep $site_description", '', $title_tag );
}

結び

毎度ですが、フォーラムで書かれている事柄を記事にする必要性はほぼありません。

が、検索で探すのに手間取った場合には、自分が検索で用いた用語で記事を書いて検索で見つけやすくしておくという一点においてメリットがあります。
今回もそれなりに検索に用いたワードを何度も変えてしまいましたので。

あくまで自分に対してのみのメリットですが。

しかし、add_theme_support( 'title-tag' )設定時にでもdescriptionについて指定できれば助かるのですが。
titleタグの内容としては、サイト名の横にdescriptionを表示させる形がメジャーということでしょうか?

0人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄