WordPressのテーマにはSEO対策として適切なタイトル・descriptionを設定するものがあり、これらの機能を持つプラグインも多数あります。
それでも、特定のページ用にfunctions.phpで独自に設定が必要になることもあります。
functions.php で独自にタイトル・description をしていても、SEO対策用に入れたプラグインによってタイトル・description が上書きされ期待通りの結果とならない事があります。
今回は、Yoast SEO Plugin を入れたときに、functions.php で設定した独自のタイトル・description を有効にする方法について説明します。
<title>タグの修正
Yoast SEO Plugin では、’pre_get_document_title’・’wp_title’フィルターフックを使って<title>タグの出力を行っています。通常 functions.php で<title>タグを出力するのと同じです。
‘wp_title’フィルターフックは、Yoast SEO Plugin の frontend/class-frontend.php で設定されています。
add_filter( 'pre_get_document_title', array( $this, 'title' ), 15 ); add_filter( 'wp_title', array( $this, 'title' ), 15, 3 );
3番目のパラメータ(15)が優先順で数値の小さい順に実行されるため、Web 上での情報を参考に functions.php で
add_filter( 'pre_get_document_title', 'original_title', 10, 3 ); add_filter( 'wp_title', 'original_title', 10, 3 );
とした場合は、Yoast SEO Plugin の設定処理が後から実行されるため、functions.php での設定が残りません。
Yoast SEO Plugin の優先順より大きな値を指定する事で、functions.php での設定が有効になります。
add_filter( 'pre_get_document_title', 'original_title', 99, 3 ); add_filter( 'wp_title', 'original_title', 99, 3 );
meta description の修正
Yoast SEO Plugin では、
add_action( 'wp_head', array( $this, 'head' ), 1 );
で、登録された action 関数 head() から
do_action( ‘wpseo_head’ );
↓
add_action( ‘wpseo_head’, array( $this, ‘metadesc’ ), 6 );
と処理が進んで、action 関数 metadesc() で meta description が設定されます。
metadesc() からさらに generate_metadesc() が呼び出されて、この関数の最後に
$this->metadesc = apply_filters( 'wpseo_metadesc', trim( $metadesc ) );
として、’wpseo_metadesc’ フィルターフックを呼び出しています。
‘wpseo_metadesc’ フィルターフックを登録する事で meta description を書き換えることが出来ます。
functions.php で
add_filter('wpseo_metadesc', 'original_description', 1);
として、original_description() 内で設定したい description を返すようにします。
その他の meta タグ
Yoast SEO Plugin では、この他に
- meta property=”og:title”
- meta property=”og:description”
- meta name=”twitter:title”
- meta name=”twitter:description”
が出力されます。
それぞれ以下のフィルターフックを登録する事で、独自のものに書き換えることが可能です。
add_filter( 'wpseo_opengraph_title', 'original_title', 99, 1 ); add_filter( 'wpseo_opengraph_desc', 'original_description', 99, 1 ); add_filter( 'wpseo_twitter_title', 'original_title', 1); add_filter( 'wpseo_twitter_description', 'original_description', 1);
対応バージョン
調査したYoast SEO Plugin のバージョンは、5.4です。バージョンにより違いがあるかもしれませんので、対象コードがYoast SEO Plugin にあるか確認して下さい。