WordPress:タイトルを自在にカスタマイズする方法
WordPress4.4以降においてtitleタグを自動出力するには、非推奨のwp_title()関数の代わりに、テーマの機能を設定する関数add_theme_support( 'title-tag' );
をfunctions.phpに記述します。functions.phpの中に書くことで保守性もよくなります。
WordPress4.4以降のtitleの記述方法
functions.php
function mytheme_set() { add_theme_support( 'title-tag' ); } add_action( 'after_setup_theme', 'mytheme_set' );
after_setup_theme
は全てのテーマが読み込まれた後にテーマの機能を設定するフックです。タイトルが重複するのでheader.phpにはtitleタグを記入しないようにします。
これでhead内にタイトルが自動で出力されますが、body内にタイトルを表示したい場合は、wp_get_document_title()をテンプレートファイルの任意の場所に記述します。
<?php echo wp_get_document_title(); ?>
document_title_parts
document_title_parts
はタイトルの一部をフィルタリングするフックです。
タイトルをページごとに変更したい場合はdocument_title_parts
をfunctions.phpに記述します。
add_filter('document_title_parts', '関数名');
条件分岐させる基本的な形
function 関数名($title){ if(条件){ $title['title'] = 変更後のタイトル値 ; } return $title; }; add_filter('document_title_parts', '関数名');
document_title_parts
の$titleパラメータ
* titleは閲覧したページタイトル
* taglineはホームページのサイト説明
* pageは番号付きページ番号
* siteはホームページにない場合はサイトのタイトル
文字「○ページ目」を削除
情報を削除するにはunsetを使います。例えば、ブログ一覧ページなどで、ページ番号の情報(例:ページ 2)をタイトルから削除する場合はこのように書きます。
function remove_title_pagenation($title){ unset( $title['page'] ); return $title; }; add_filter('document_title_parts', 'remove_title_pagenation');
サイトの説明を削除
ホームページのキャッチフレーズ(サイトの説明)を削除する場合は、このような記述になります。
function remove_title_description ( $title ) { if ( is_home() || is_front_page() ) { unset( $title['tagline'] ); } return $title; } add_filter( 'document_title_parts', 'remove_title_description', 10, 1 );
検索結果ページの和欧混植を置換・変更する
検索結果のページタイトルはデフォルトでダブルクォーテーションが付与されているので和欧混植になっています。これを以下のように日本語の記述名に置換してみましょう。
変更前:“○○” の検索結果 ↓ 変更後:「○○」を検索しました
// ページタイトル「検索結果」の一部を変更する function change_title($title){ if(is_search()){ $search = array('“','”','の検索結果'); $title = str_replace( $search, '', $title ); $title['title'] = '「' . $title['title'] . '」を検索しました'; } return $title; }; add_filter('document_title_parts', 'change_title');
条件分岐タグので検索結果を指定して、消したい文字を配列に入れて、str_replaceで置換しています。条件分岐タグを変えていけば、アーカイブ・404・カスタムポストなどのページも好きなように変更できます。
検索結果だけ変更したい場合は、サイト内検索を行ったときのクエリ文字列を取得するget_search_query()
を使うと記述量を減らすことができます。
function change_title($title){ if(is_search()){ $title['title'] = '検索結果:' . get_search_query(); } return $title; }; add_filter('document_title_parts', 'change_title');
404ページのタイトルを変更する
条件分岐で404ページなどを追加して個別に変更します。
// ページごとにタイトルを変更する function change_title($title){ if(is_search()){ $title['title'] = '検索結果:' . get_search_query(); } elseif(is_404()){ $title['title'] = 'お探しのページは見つかりません' ; } return $title; }; add_filter('document_title_parts', 'change_title');
以上、SEO対策にもなる、最近のWordPressタイトルカスタマイズでした。
WordPressカスタマイズに便利なテクニック一覧
- [開発環境] WordPressをコマンドでインストールする
- [開発環境] Vagrant+Virturlbox+VCCWの使い方
- [雛形] WordPressのif文(条件分岐)
- [雛形] 便利なテンプレートタグ
- [構築] functions.phpに書いておくべきこと
- [構築] パンくずリストを出す方法
- [構築] コメントを設置する簡単な方法
- [管理画面] プラグインの自動更新通知メールを停止させる
- [管理画面] 管理画面のユーザーページに項目を追加する
- [管理画面] カスタムポストを追加する
- [翻訳] 多言語サイトを作るプラグイン「bogo」の使い方
- [フォーム] 「MW WP Form」の使い方と住所自動入力
- [関連記事] プラグインを使わずにWordPressで関連記事を出す方法
- [SEO] タイトルのカスタマイズ
- [pre_get_posts] カテゴリページや検索結果の表示を調整
スポンサード リンク
Leave a Comment