WordPress:タイトルを自在にカスタマイズする方法
WordPress4.4以降においてtitleタグを自動出力するには、非推奨のwp_title()関数の代わりに、テーマの機能を設定する関数add_theme_support( 'title-tag' );
をfunctions.phpに記述します。functions.phpの中に書くことで保守性もよくなります。
エンジニア速報は Twitter の@commteで配信しています。
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] カテゴリページや検索結果の表示を調整
スポンサード リンク
関連記事
- WordPressプラグインの自動更新通知メールを停止させる
- WordPress:pre_get_postsを用いてカテゴリページや検索結果の表示を調整する
- プラグインを使わずにWordPressで関連記事を出す方法
- WordPressプラグイン「MW WP Form」の使い方と住所自動入力(郵便番号で動かない場合)
- WordPressでカスタムポストを追加するシンプルな方法
- WordPress管理画面のユーザーページに項目を追加する
- よく使うWordPressのif文(条件分岐)まとめ
- WordPressでパンくずリストを出す方法
- WordPressテーマ作成の時に覚えておくと便利なテンプレートタグ
- WordPressのfunctions.phpに書いておくと捗ること
Leave a Comment