MENU CLOSE

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

WordPress
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

Transients API
inoue
inoue
TIPS

【WordPress】Transients APIを使ってデータをキャッシュする方法

Flatpickr
inoue
inoue
TIPS

Flatpickrで日時入力をカレンダー表示にする

BASE DESIGN THEME
inoue
inoue
TIPS

BASEテーマカスタマイズ【実践編】見出しの文言を変更できるようにする

BASE DESIGN THEME
inoue
inoue
TIPS

BASEテーマカスタマイズ【デザインオプション編】テーマに新しい機能を加える方法

BASE DESIGN THEME
inoue
inoue
TIPS

BASEテーマカスタマイズ【準備編】カスタマイズに必要な前提知識について

BACKGROUND VIDEO
inoue
inoue
TIPS

動画をWebページの背景に埋め込む時のテクニック

NEW POSTS

svg-audiovisualizerAudioVisualizer [ howler.js + SVG ]
inoue
inoue
TRY

【howler.js】ストリーミング音源からオーディオビジュアライザーを作る

Simple GA Ranking
inoue
inoue
TRY

Simple GA Ranking[ver2.1.6]が表示されないので調べてみた

Sass @import → @use
inoue
inoue
TRY

【Sass】@importを@useに置き換えてみる《FLOCSS対応》

Stripe Payment Links
inoue
inoue
TRY

コーディング一切不要のStripe Payment Linksで決済機能を試してみる

BASE Partners
inoue
inoue
COLUMN

【BASE Partners】有料テーマの無償提供特典について

BASE Partners
inoue
inoue
COLUMN

BASEオフィシャルパートナーに認定されました

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