wordpress

[WordPress]SEO対策としてcanonicalを記事ページ以外にも設定するカスタマイズ個人的ベストアンサー

canonical

こんにちは!みぞれ(@xxmiz0rexx)です。
スマートフォン用ページやAMPページ、wwwがあったりなかったり、httpとhttpsの混在など、昨今のWebページには同じコンテンツなのにURLが様々あったりします。

そんなときに使いたいのがcanonical(カノニカル)というメタタグ。
今回はそんなカノニカルを記事ページ以外にも出力するためのカスタマイズを記事にしたいと思います。

canonicalとは?

前述したとおり、URLの正規化をするためのメタタグです。
このメタタグに一番正しいURLを記載しておけば、サイトの評価が分散せずに済みますのでSEOの対策としては必要不可欠かと思います。
ただし、ここで設定するURLをミスるとそのミスったURLがGoogleなどの検索エンジンにクロールされてしまいますので、設定には注意が必要です

canonicalについて詳しく知りたい方は以下の参考記事を読んでみてください。

参考:【海外SEOよくあるご質問】 canonical(カノニカル)タグとは? | 世界へボカン!ブログ はてなブックマーク - 【海外SEOよくあるご質問】 canonical(カノニカル)タグとは? | 世界へボカン!ブログ

canonicalをいろいろなページに出力しよう!

このカスタマイズについてググっていると、タグ一覧のURLがうまく出なかったり、出てもタグ名で出力しているコードばかりだったのですが、
今関わっているメディアではスラッグをわざわざ英語名に書き換えているので、ちゃんとスラッグを出力するコードを泣きながら書いてみました。

スラッグが日本語のままの方でもモチロン使えます。

functions.php内
//Canonical
remove_action('wp_head', 'rel_canonical');

add_action( 'wp_head', 'add_canonical' );
function add_canonical() {
  $canonical = null;

  if( is_home() || is_front_page() ) {
    $canonical = home_url();
  } elseif ( is_category() ) {
    $canonical = get_category_link( get_query_var('cat') );
  } else if(is_tag()){
    $canonical = get_tag_link(get_queried_object()->term_id);
  } elseif ( is_search() ) {
    $canonical = get_search_link();
  } elseif ( is_page() || is_single() ) {
    $canonical = get_permalink();
  } else{
    $canonical = home_url();
  }
  echo '<link rel="canonical" href="'.$canonical.'">'."\n";
}

追記

WordPressの神ことまがりんさんにアドバイスを頂き、タグアーカイブのURLの取得方法がスマートになりました!

変更前
    $tagName = single_tag_title( '', false );
    $tag = get_term_by( 'name', $tagName, 'post_tag' );
    $canonical = home_url().'/tag/'.$tag->slug;
変更後
    $canonical = get_tag_link(get_queried_object()->term_id);

まがりんさんの神サイト:Simple Colors | WordPressを中心に、F1とか読書とか写真とか はてなブックマーク - Simple Colors | WordPressを中心に、F1とか読書とか写真とか

おわりに

というわけで、『[WordPress]SEO対策としてcanonicalを記事ページ以外にも設定するカスタマイズ個人的ベストアンサー』でした。

これからcanonicalを設定しよう・・!という方はぜひ参考にしてみてください(*´∨`*)
以上、みぞれでした!