WordPress Canonical URLを全ページに設定する方法

WordPressで全ページに「canonical」を設定する方法です。

WordPress 全ページにcanonicalを設定する方法

WordPressの機能では全ページに「canonical」を設定できません。独自でPHPを書くか、プラグインを導入するかの2択です。

今回、自前で「canonical」を設定をしようと思ったきっかけは、「All in One SEO Pack」というプラグインを停止しようと思ったからです。

「All in One SEO」は、とても高機能で優秀なプラグインではありますが、正直、バージョン4.0.0以降は使いにくくなったし、脆弱性も確認されたし、謎のログがテーブルに膨大に蓄積されるし、なんといっても遅いし。近頃のSEOは、表示速度に重きを置いていることもあり、いっそのこと停止して独自実装してしまおうと考えました。

ここでは WordPressで全ページにcanonicalを設定する方法 を紹介します。


Canonicalとは?

Canonicalとは、URLの正規化を行うためのメタタグのことです。ページの内容が重複・類似していたりしている場合に、検索エンジンからの評価が分散しないよう、回避することができます。

例えば、ECサイトで販売している商品の、色やサイズが違うだけのページがいくつもある場合などに、canonicalタグで正規化することで、SEOに有利になります。

重複ページの中から最も大切なURLだけを検索インデックスに登録して、コピーコンテンツとみなされないようにしましょう。

functions.phpにCanonical URLを出力するコードを記述する

下記のコードをfunction.phpへ追記します。

/**
 * canonical設定
 */
remove_action('wp_head', 'rel_canonical');
add_action( 'wp_head', 'add_my_canonical' );
function add_my_canonical() {
  $canonical = null;
  if( is_home() || is_front_page() ) { // トップページ
    $canonical = home_url('/');
  } elseif ( is_post_type_archive() ) { // カスタム投稿タイプ
    $canonical = get_post_type_archive_link( get_query_var('post_type') );
  } elseif ( is_tax() ) { // タクソノミー
    $canonical = get_term_link(get_queried_object()->term_id);
  } elseif ( is_category() ) { // カテゴリー
    $canonical = get_category_link( get_query_var('cat') );
  } elseif ( 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";
}

カスタム投稿タイプとタクソノミーは、一般的なブログ運営されている方には不要かもしれないけど、個人的にはメッチャ使っているので。

ページを表示すれば下記のタグが追記されます。ソースチェックしてみてください。

<link rel="canonical" href="ページURL">

まとめ

WordPressで全ページにcanonicalを設定する方法を紹介しました。

とりあえず「All in One SEO Pack」を停止して、これまで使っていた機能を全て自前でコード書こうと思っています。

他にも「title」「description」「keyword」の書き換えとか、いろいろあるわけだけれども、とりあえずはcanonical設定からって感じですね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。