MENU CLOSE

【WordPress】canonicalタグを出力する
関数を作る

WordPress

はじめに

今回はcanonicalタグをWordPressにサクッと設置するメモ。
functions.phpに自作の関数を書いて設定します。

canonicalタグって?

canonicalタグというのは、SEOに関係する重要なhtmlタグのひとつです。
WEBページを公開すると、www有り無しやhttpとhttpsのように複数のURLパターンが存在します。これはそのままにしておくと「重複コンテンツ」といって、ページの評価が分散してしまい正しく評価されません。そのため評価してほしい正しいURLはどれかというのをcanonicalタグで明示し、URLの正規化を行います。(本来はリダイレクトも必要ですが、それはまた次の機会に)

canonicalタグを設置する手順

ここから全ページにcanonicalを設定する具体的な方法を書きます。
※自作の関数ですので、コピペで不具合が起きた場合は自己責任でお願いします。そもそも全てのサイトで使える設定というのは有り得ませんので、ご自身のサイトに使う場合は調整が必須です。

WordPressデフォルトのcanonicalタグを削除

まずデフォルトのままでもWordPressが自動で挿入するcanonicalタグがあります。ただ出力されるページが固定ページと投稿ページに限られるので、今回は完全に自分でカスタマイズするためにその出力を停止します。
functions.phpに下記の記述を追記します。

remove_action('wp_head', 'rel_canonical');

一度、ページのソースを確認して<head>内にcanonicalタグが無くなっていればOKです。

自作のcanonical出力関数を追記する

続いてfunctions.phpに下記の関数を追記します。

//canonical URLを取得
function get_canonical()
{
  //404ページ
  if(is_404()){
    return;
  }

  //フロントページ
  if (is_front_page()) {
    $canonical_url = home_url('/');
  }
  //カテゴリーページ
  elseif (is_category()) {
    $cat_id        = get_query_var('cat');
    $canonical_url = get_category_link($cat_id);
  }
  //タクソノミーページ
  elseif (is_tax()) {
    $term          = get_queried_object();
    $canonical_url = get_term_link($term);
  }
  //タグページ
  elseif (is_tag()) {
    $tag_id        = get_query_var('tag_id');
    $canonical_url = get_tag_link($tag_id);
  }
  //固定・投稿ページ
  elseif (is_page() || is_single()) {
    $canonical_url = get_permalink();
  }
  //著者情報ページ
  elseif(is_author()){
    $author_id     = get_query_var('author');
    $canonical_url = get_author_posts_url($author_id);
  }
  //月別アーカイブページ
  elseif(is_date()){
    $year          = get_query_var('year');
    $month         = get_query_var('monthnum');
    $canonical_url = get_month_link( $year, $month );
  }
  //その他
  else {
    $canonical_url = null;
  }
  return $canonical_url;
}

条件分岐でそのページのURLを設定してあげるだけです。必要なものを増やしたり減らしたり簡単にカスタマイズ可能です。必要のないページにはnullを返すようにしておきます。

htmlのheadタグにcanonical出力関数を追記

header.phpなどに書いている<head>タグ内に以下の記述を追記します。

<head>
<?php
$canonical = get_canonical();
if(!empty($canonical)):
  ?>
  <link rel="canonical" href="<?php echo esc_url($canonical)?>">
  <?php
endif;
?>
</head>

これで条件分岐が設定されているページにcanonicalタグが表示されるようになります。各ページを確認してみてください。

実装は以上です!簡単ですねー!

おわりに

SEO対策として重要な役割のcanonicalタグ。
検索するといくらでも出てくるかなり認知度の高い知識ではありますが、自分でサクッと見直すにはこのくらいの内容がちょうどいいかなと思ってメモしておきました。
canonicalよりもリダイレクトをしっかりとしておく方が大事なので、またそれは別の機会に!

記事一覧

RELATED

WebP
inoue
inoue
TIPS

Gulpを使ってWebP画像を生成する方法【Gulp4】

howler.js
inoue
inoue
TIPS

howler.jsの使い方[音声ファイルの再生・停止]

object-fit
inoue
inoue
TIPS

【CSS】object-fitの使い方[IE11対応]

nuxt + netlify
inoue
inoue
TIPS

Nuxt.js + Netlifyで問い合わせフォームを作る方法【自動返信あり】

WordPress Theme Customizer
inoue
inoue
TIPS

【WordPress】テーマカスタマイザーを作成する

Dropdown Menu
inoue
inoue
TIPS

レスポンシブなドロップダウンメニューをつくる

ブログ記事一覧
  • HOME
  • TIPS
  • 【WordPress】canonicalタグを出力する関数を作る