SANGOのテーマをさらに最適化するnoindexとcanonicalの追加カスタマイズ

当サイトでも利用しているWordPressテーマSANGOは、見やすいデザインで内部最適化もされているイケてるテーマです。

普通に使っていて何も不都合はありませんが、この記事のちょっとしたカスタマイズを加えてあげると、さらにSANGOの力を発揮させることができます。

SANGOを使っている方は、この記事を参考にトライしてみてください。

canonicalとは

noindexは、メジャーワードなので説明は割愛し、canonicalについて念の為おさらいしておきましょう。

canonicalは、インデックス最適化を行う為のタグで、ページが重複している場合に、どのURLが正規URLになるのかを検索エンジンに示すための記述を指します。

URLの正規化処理をしていない場合、せっかく良いコンテンツを作成しても複数の異なるURLで同一のページを閲覧できる状態となってしまうことがあり、場合によっては重複コンテンツとみなされてマイナスの評価を受ける可能性があります。

かかかず
かかかず

端的に言うと、正しいURLをクローラーに伝える役割です。

Googleウェブマスター向け公式ブログの記事に、詳しい記述と使い方や実例があり、より詳しい話はこの記事が非常に参考になります。

この記事は2013年のものですが、2021年3月の検索オフィスアワーで内容に齟齬がないことは確認されています。

各ページのnoindexとcanonicalのカスタマイズ

全て子テーマのfunctions.phpにコピペするだけでできますが、間違った記述を行うと全ての画面表示が真っ白になったりするので、注意しましょう。

注意
functions.phpをいじる場合、ftpで必ずバックアップを取ってから行い、テーマ本体ではなく子テーマの方に関数をコピペするようにしましょう。

トップ・タグ・カテゴリページにcanonicalタグを追加

これは、SANGOを使っている方はやっておきたいカスタマイズです。

SANGOの投稿ページと固定ページにはデフォルトで、canonical タグをつけてくれますが、トップページ・タグページ・カテゴリページには付与されません。

かかかず
かかかず

このコードを使った方がいいのは、ある程度記事数が増えてきて、ページネイションがある場合です。

詳しい話は割愛しますが、SANGOはページネイションのrel="prev/next" のタグも出力しないので、以下のコードをコピペしてURLの正規化をしておく必要があります。

HTML

//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の通知が来るので結構気持ち悪いです。

tagページのnoindex
Google Search Console より

以下のコードをSANGOの子テーマのfunctions.phpにコピペすれば、タグページのnoindexを削除してくれます。

HTML

// デフォルトの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をつけてくれます。

HTML

//著者記事一覧ページを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設定メモ
カテゴリーのイラスト

同じカテゴリの記事一覧

ボタンの影