Search Consoleで 次のような通知を見たことはありませんか?
こちらは [検索での見え方] > [HTMLの改善] で表示できます。
重複しているとSEO的に評価されづらくなるということで、ページごとに設定するに越したことはありません。
とはいえ、極力自動化させたい・・・ということで、WordPress上で実装したのが以下のコードです。
重複しないタイトルタグ
WordPressで設定できるサイト名、サイトのキャッチフレーズを利用して、以下のように表示されるタイトルタグを生成します。
アーカイブではページ数を表示し、同じカテゴリーでもタイトルタグがページごとに異なるようにしています。
タイトルタグ表示例
| TOP | サイト名|サイトのキャッチフレーズ |
|---|---|
| 記事 | 記事タイトル|サイト名 |
| カテゴリーアーカイブ | カテゴリー名|サイト名 – サイトのキャッチフレーズ(ページ番号) |
| カテゴリーアーカイブ (子カテゴリー有り) | 親カテゴリー名:子カテゴリー名(ページ番号)|サイト名 – サイトのキャッチフレーズ |
| タグアーカイブ | タグ名 タグ一覧(ページ番号)|サイト名 – サイトのキャッチフレーズ |
| カスタム投稿アーカイブ or タクソノミーアーカイブ | ターム名(ページ番号)|サイト名 – サイトのキャッチフレーズ |
function title_tag() {
$pageno = (get_query_var('paged')) ? '('.get_query_var('paged').')' : '';
$site_description = get_bloginfo('name').' - '.get_bloginfo('description');
if ( is_home() || is_front_page() ){
echo get_bloginfo('name').'|'.get_bloginfo('description').$pageno;
} elseif ( is_post_type_archive() || is_tax() ) {
echo single_term_title( '' , false).$pageno.'|'.$site_description;
} elseif( is_category() ){
$cat = get_queried_object();
if($cat -> parent != 0){
$ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
foreach($ancestors as $ancestor){
echo get_cat_name($ancestor).':';
}
}
echo single_cat_title( '' , false).$pageno.'|'.$site_description;
} elseif( is_tag() ){
echo single_tag_title( '' , false).$pageno.' タグ一覧|'.$site_description;
} elseif ( is_404() ) {
echo 'お探しのページは存在しません|'.$site_description;
} else {
echo wp_title('', false).'|'.get_bloginfo('name');
}
}
重複しないdescription
descriptionは、記事の抜粋を利用しています。
入力されていなかった場合は、管理画面から設定できるサイトのキャッチフレーズを表示するようにしています。
アーカイブページではサイトのキャッチフレーズにページ番号を付けることでページごとに異なるdescriptionを生成しています。
description表示例
| 記事 or 固定ページ | 記事の抜粋 |
|---|---|
| カテゴリーアーカイブ | カテゴリー名一覧:記事の抜粋 Page – ページ番号 |
| タグアーカイブ | タグ名タグ一覧:記事の抜粋 Page – ページ番号 |
| タクソノミーアーカイブ | タクソノミー名:記事の抜粋 Page – ページ番号 |
| カスタム投稿アーカイブ | カスタム投稿タイプの説明 Page – ページ番号 |
| 上記以外 | サイトのキャッチフレーズ |
function description_tag() {
$pageno = (get_query_var('paged')) ? ' Page - '.get_query_var('paged') : '';
$home_id = get_option( 'page_on_front' );
if ( get_the_excerpt() ){
echo get_the_excerpt();
} elseif( is_tax() ) {
echo single_term_title( '' , false).':'.get_bloginfo('description').$pageno;
} elseif( is_category() ) {
echo single_cat_title( '' , false).'一覧:'.get_bloginfo('description').$pageno;
} elseif( is_tag() ) {
echo single_tag_title( '' , false).'タグ一覧:'.get_bloginfo('description').$pageno;
} elseif( is_post_type_archive() && get_post_type_object( get_post_type() )->description ) {
echo get_post_type_object( get_post_type() )->description.$pageno;
} else {
echo get_bloginfo('description');
}
}