WordPressのtitleタグの出力内容をカスタムフィールドで変更できるようにしてみた。
ACFが好きすぎて、いじり倒してます。
あべ
SEO対策のために、WPのタイトルを丸々変更しなければいけないことがあります。
テンプレ開いて分岐を沢山書いて編集するのが大変なので、ちょっとWPに手を加えて管理画面から編集できるように楽にしてみましたので、ご紹介いたします。
では、シングルページのタイトルをカスタムフィールドの値で書き直します。
目次
魔法の呪文 add_theme_support
今回は、WordPress4.1から利用可能な、add_theme_supportを使って対応していきます。
今までは、header.phpに記載していたと思いますが、4.1からは自動でヘッターにtitleタグが記載されるようになりました。
(header.phpに、titleタグ書いてると二重に掲載されちゃうのでご注意ください。)
カスタムフィールドを作成
ACF等を使い、カスタムフィールドでタイトル用のフィールドを作ります。
(titleだと、デフォルトのキーとかぶる可能性があるので、m_titleという名前にしました。)
functions.phpに記載
functions.phpに記載していきます。
今回は、タイトルを丸々書き換える設定です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//add_theme_supportを有効化 add_theme_support( 'title-tag' ); //書き換え用の記載 function wp_document_title_parts( $title ) { //シングルページの分岐 if ( is_singular()){ //シングルページで作ったカスタムフィールド $m_title の値をとってくる。 $m_title = get_field( 'm_title' ); //入力されていたのかの確認。 if($m_title){ //デフォルトのtitleの内容を削除してリセット。 unset( $title['site'] ); $title['title'] = $m_title; } } return $title; } add_filter( 'document_title_parts', 'wp_document_title_parts', 10, 1 ); |
おまけ、デフォルトの区切りが嫌なので変えたい
おまけで、固定ページ等のデフォルトの区切りが’-‘なので、変更します。
1 2 3 4 5 6 |
//デフォルトの区切りが'-'なので'|'へ変更。 add_filter( 'document_title_separator', 'my_document_title_separator' ); function my_document_title_separator( $sep ) { $sep = '|'; return $sep; } |
出力して確認
カスタムフィールドに値を入れて更新!
これで書き換えることができました。
分岐部分を変えたら応用がきくので、覚えているとかなり便利ですよ。
記事を書いた人