当サイトでも利用しているWordPressテーマSANGOは、見やすいデザインで内部最適化もされているイケてるテーマです。
普通に使っていて何も不都合はありませんが、この記事のちょっとしたカスタマイズを加えてあげると、さらにSANGOの力を発揮させることができます。
SANGOを使っている方は、この記事を参考にトライしてみてください。
目次
canonicalとは
noindex
は、メジャーワードなので説明は割愛し、canonical
について念の為おさらいしておきましょう。
canonicalは、インデックス最適化を行う為のタグで、ページが重複している場合に、どのURLが正規URLになるのかを検索エンジンに示すための記述を指します。
URLの正規化処理をしていない場合、せっかく良いコンテンツを作成しても複数の異なるURLで同一のページを閲覧できる状態となってしまうことがあり、場合によっては重複コンテンツとみなされてマイナスの評価を受ける可能性があります。
端的に言うと、正しいURLをクローラーに伝える役割です。
Googleウェブマスター向け公式ブログの記事に、詳しい記述と使い方や実例があり、より詳しい話はこの記事が非常に参考になります。
この記事は2013年のものですが、2021年3月の検索オフィスアワーで内容に齟齬がないことは確認されています。
各ページのnoindexとcanonicalのカスタマイズ
全て子テーマのfunctions.php
にコピペするだけでできますが、間違った記述を行うと全ての画面表示が真っ白になったりするので、注意しましょう。
トップ・タグ・カテゴリページにcanonicalタグを追加
これは、SANGOを使っている方はやっておきたいカスタマイズです。
SANGOの投稿ページと固定ページにはデフォルトで、canonical
タグをつけてくれますが、トップページ・タグページ・カテゴリページには付与されません。
このコードを使った方がいいのは、ある程度記事数が増えてきて、ページネイションがある場合です。
詳しい話は割愛しますが、SANGOはページネイションのrel="prev/next"
のタグも出力しないので、以下のコードをコピペしてURLの正規化をしておく必要があります。
//canonicalタグをトップ・タグ・カテゴリページに追加
add_action( 'wp_head', 'add_canonical' );
function add_canonical() {
if(is_category()) {
echo '<link rel="canonical" href="'. get_category_link( get_query_var('cat') ) .'"/>';
} elseif (is_tag()) {
echo '<link rel="canonical" href="'. get_tag_link(get_queried_object()->term_id) .'"/>';
} elseif (is_home() || is_front_page()) {
echo '<link rel="canonical" href="'. home_url() .'"/>';
}
}
タグページのnoindex削除
SANGOでデフォルトの状態は、タグに関連する記事が一覧で表示されるタグページにnoindexが付く仕様です。
デフォルトの状態だと、カバレッジレポートにnoindexの通知が来るので結構気持ち悪いです。
以下のコードをSANGOの子テーマのfunctions.php
にコピペすれば、タグページのnoindex
を削除してくれます。
// デフォルトのmeta robotsタグの除去
function remove_parent_theme_hook(){
remove_action('wp_head','sng_meta_robots', 10);
}
add_action('after_setup_theme','remove_parent_theme_hook');
// デフォルトのコードをカスタマイズ
function my_meta_robots() {
global $post;
$rogots_tags = '';
if (is_attachment()) {//メディアページの場合
$rogots_tags = 'noindex,nofollow';
} elseif (is_page() || is_single()) { //記事・固定ページの場合
$robots_r = get_post_meta( $post->ID, "noindex_options", true );
if( is_array($robots_r) ) {
$rogots_tags = ( in_array('noindex', $robots_r) && !in_array('nofollow', $robots_r)) ? 'noindex,follow' : implode( ",", $robots_r);
}
} elseif(is_paged() || is_date()){ //トップやアーカイブの2ページ目以降はindexせず、followだけ。
$rogots_tags = 'noindex,follow';
} elseif(is_search()){ //検索結果はインデックスしない
$rogots_tags = 'noindex,nofollow';
} elseif(is_category()){ //カテゴリーページ
//初期設定ではインデックス。下記のコメントアウトを外すとnoindexに
//$rogots_tags = 'noindex,follow';
}
elseif(is_tag()) {
// 下記のコメントアウトを外すと再度noindexに
//$rogots_tags = 'noindex,follow';
}
if($rogots_tags) {
echo '<meta name="robots" content="'.$rogots_tags.'" />'."\n";//出力
}
}
add_action( 'wp_head', 'my_meta_robots' ,10);
著者の記事一覧ページにnoindex設定
以下のような著者の記事一覧ページにnoindex
をつけたい時のコードです。
これも、以下のコードをSANGOの子テーマのfunctions.php
にコピペすればnoindex
をつけてくれます。
//著者記事一覧ページをnoindex
add_action( 'wp_head', 'add_noindex_to_author' );
function add_noindex_to_author() {
if( is_author() ) {
echo '<meta name="robots" content="noindex,nofollow" />';
}
}
さいごに
ページネイション絡みのタグやカテゴリページは、記事数が増えてくると露出する機会が増えてくるので、適当なタイミングで最適化しておきましょう。
参考サイト
参考SANGOテーマでタグに付くnoindex解除の方法【公式の修正版】かゆいところに手が届く開発・PC設定メモ