以前にも記事にしていたのですが、WordPressのバージョン4.1以降からfunctions.php
等にadd_theme_support( 'title-tag' );
と記述しtitleタグを出力するという手法が推奨されました。詳しくは下記リンクからどうぞ!
https://wheelchair-coder.com/109/
この記事を書いた時点では、metaのog:titleには結局wp_title()関数を使い出力しておりました。が、調べてみると別の便利な関数が用意されているようですね!
それでは、紹介していきたいと思います。
コンテンツ一覧
使用する関数
そのページのドキュメントタイトルを取得する関数は、wp_get_document_title();
になります。
この関数を使用することにより、add_theme_support( 'title-tag' );
で出力されるタイトルの中身を出力することが出来ます。この関数の存在を知るまでは、結局og:titleはwp_title()関数を使い別途出力させておりました。Before, Afterにすると以下のようになります。
Before
<meta property="og:title" content="<?php wp_title( '|', true, 'right' ); bloginfo( 'name' ); ?>">
After
<meta property="og:title" content="<?php echo wp_get_document_title(); ?>">
タイトルの出力内容をカスタマイズ
add_theme_support( 'title-tag' );
やwp_get_document_title();
で出力されるタイトルは、WordPressによる自動吐き出しです。例えばトップページの場合、以下のように出力されます。
<title>サイト名 – サイトディスクリプション</title>
トップページの時に出力されるタイトルを「サイト名」のみにしたいとしましょう。フィルターフックが用意されておりますので、結果的には以下のようになります。
<?php function custom_title_text( $results ){ if( is_home() ){ $results['tagline'] = ''; } return $results; } add_filter( 'document_title_parts', 'custom_title_text', 11 ); ?>
解説していきますと、まずcustom_title_text()
関数の引数になっている$results
は配列となっております。トップページを例にすると、以下が配列の中身です。
Array ( [title] => サイト名 [tagline] => ディスクリプション )
で、今回の関数内ではこのように記述しております。
if( is_home() ){ $results['tagline'] = ''; }
ホームの場合ディスクリプションを空にするという処理になりますね。これにより、サイトの仕様的に「このページの時はタイトルをこうしたい!」という場合にも対応することができますね!
バージョンが上がるに連れて推奨とされる記述は変わっていきます。こまめにリファレンス等チェックしたり、新たなデフォルトテーマを覗いたりして、置いていかれないようにしなければですね!
コメントする