【たった1行】プラグインなしで各ページのcanonicalタグを設定する方法

canonicalタグをプラグインなしで出力

いきなりですが、canonicalタグの存在を知っていますか?

WordPressで構築されたサイトでは、無意識のうちに、同じ内容のページを複数のURLで公開してしまってGoogleからコンテンツの複製と見なされてペナルティを受けてしまった(泣)というケースがよくあります。

また、canonicalタグには、SEO的にも良いとされており、検索順位UPの可能性も秘めています!

そこで今回は、「【たった1行】プラグインなしで各ページのcanonicalタグを設定する方法」という、ごくシンプルな方法をご紹介しますね。

canonicalタグとは?

canonicalタグは、記事の重複があっても同じページとして認識させるための設定です。

例えば、ドメインに「https」と「http」がある、「www」ありとなしが併存している。

このように、同じコンテンツに、「https」と「http」、「www」ありとなしのURLが存在している場合には、canonicalタグを使って、URLの正規化を行なう必要があります。

また、商品のサイズや色ごとに表示させるページを変えていて、画像のみが異なっている場合なども、重複ページとして認識されてしまうので。canonicalタグでURLの正規化を行なう必要があります。

URLの正規化とは?

上記の例の場合などに、Googleが同一の別ページと認識してしまい、それが原因でコンテンツの評価が分散してしまったり、ミラーコンテンツとみなされてペナルティを受けてしまうのを防ぐため、検索エンジンに評価してもらいたいURLを統一すること

これは、Googleからも推奨されているので、SEO対策として対応すべきです。

ある1つのコンテンツに対して、張られるリンクのURLがユーザーによって異なると、そのコンテンツに対する評価がURLごとに分かれてしまう恐れがあります。これを防ぐために、サイト内でページをリンクするときには、常に特定のURLを使用するようにしましょう。

WordPressの有料テーマの場合でも、canonicalタグが無いテーマもあるので、確認してみてください!

WordPressで勝手に出力されるcanonicalを消す

WordPressでは、要らないタグまで勝手に出力されてしまいます。

それを防ぐために、ますはWordPressが自動出力するcanonicalタグを削除する必要があります。

下記のコードをfunctions.phpに追加します。

// 勝手に出力するcanonicalタグを削除
remove_action('wp_head', 'rel_canonical');

これで、WordPressがデフォルトで出力するcanonicalタグを消すことができました。

WordPressが自動でつけるcanonicalタグは間違っていたりすることもあるので、確実に自分で設定しましょう。

全ページにcanonicalタグを表示する

canonicalタグに設定するURLを現在アクセスしているページのURLが表示されるようにしています。

header.phpのheadタグ内に下記のコードを追加して下さい。

<?php echo '<link rel="canonical" href="http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'].'">'; ?>

注意してほしいのが、今回の紹介ではhrefの部分が「http」になっているので、自分のサイトに合わせて「https」に変更するなどして下さいね。

これで全ページにcanonicalタグが出力されるようになりました!

ページごとに自動で出力されるので、他のページでもしっかりcanonicalタグが設定できています!

canonicalタグの出力確認

404以外のページでcanonicalタグを表示する

僕的には、404ページにcanonicalタグは必要ないと考えているので、404ページ以外の全ページにcanonicalタグを出力する方法もご紹介しておきますね!

404ページ

リンク切れなどで、ユーザーがアクセスしたページが存在しない場合に表示されるエラーページ

header.phpのheadタグ内に下記のコードを追加して下さい。

<?php
  if(!is_404()){
        echo '<link rel="canonical" href="http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'].'">';
  }
?>

if(!is_404())の部分で、404ページ以外に処理させるようにしています。

これは、WordPressの条件分岐で、「!」は「以外」を表します。

なので、「もし404ページ以外だったら」という意味になります。

まとめ:canonicalタグは設定しとくべし

いかがでしたか?

canonicalタグを使ったURLの正規化は、内部SEO対策として基本部分ですが、Googleの検索エンジンからの評価を下げないために、設定しておきましょうね!

他にもこんな記事があります!