IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / Wordpress / WordPress:canonicalタグをプラグインなしで制御する

WordPress:canonicalタグをプラグインなしで制御する

2022/12/27 Wordpress

テーマをゼロから作ってみる(10)です。有料無料問わず公開されているテーマやプラグインをできるだけ使わずにサイトを立ち上げてみようというプロジェクトです。この記事現在はまだ Genesis Framework を使っている状態です。

現在は SEO 対策進行中です。カテゴリーページや記事一覧ページは noindex にする予定でしたので canonical は考えていなかったのですが、index にしたほうがいいのではないかと思い始め、その場合は canonical を入れたほうがいいだろうということでその方法です。

  • WordPress デフォルトの canonical タグ
  • 現在のサイト構成
  • canonical タグの出力
  • ショートリンク shortlink 削除

WordPress デフォルトの canonical タグ

現時点の最新の WordPress 6.1.1 では、投稿ページと固定ページに canonical タグが入ります。要は条件分岐タグ is_singular() に true を返す場合には canonical タグが挿入されるということです。

ただし、ややこしいケースがひとつあります。同じ固定ページでも、設定 > 表示設定 > ホームページの表示で固定ページを選択した場合、ホームページに選んだ固定ページは is_front_page() と is_singular() のいずれにも true を返しますので canonical タグが挿入されますが、投稿ページに選んだ固定ページは is_singular() には false を返し、is_home() に true を返しますので canonical タグは表示されません。

現在のサイト構成

現在のサイト構成を整理します。下のリンク先にデモサイトがあります。

  • ゼロから作る WordPress テーマ

まず、現在の各ページとテンプレートファイル、そして index, canonical の関係を整理してみます。言葉があれこれ入り乱れていますので、サイトのトップページは「ホームページ」、各記事ページは「投稿ページ」、記事一覧ページは「ブログページ」と統一することにします。

ページ名テンプレートindexcanonical
ホームページfront_page.phpmax-image-preview:large 自動自動出力
投稿ページsingle.phpmax-image-preview:large 自動自動出力
ブログページindex.php同上または
functions.phpでnoindex
functions.phpで出力
または何もしない
カテゴリーページindex.php同上または
functions.phpでnoindex
functions.phpで出力
または何もしない
検索ページ未定noindex
お問い合わせページ未定noindex

ブログページは新着順の記事一覧、カテゴリーページは各カテゴリーの記事一覧になりますので、現時点では noindex にすべきかどうか判断できていません。ですので canonical タグを functions.php で制御できるようにしておこうということです。

canonical タグの出力

ホームページと投稿ページはデフォルトで canonical タグが出力されますので、wp_head アクションフックを使わずに index.php に直書きすることにします。

<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<?php wp_head(); ?>
<link rel="canonical" href="<?php echo esc_url(get_imz_canonical_url()); ?>" />
</head>
(略)

get_imz_canonical_url() でページの url を取得します。

function get_imz_canonical_url(){
	if ( is_category() ) {
		$canonical = get_category_link( get_query_var('cat') );
	}else if(is_home()){
		$canonical = get_page_link(get_option('page_for_posts'));					
	}
	return $canonical;
}

ショートリンク shortlink 削除

デフォルトでは投稿 ID のクエリ付き url がショートリンクとして挿入されています。必要ありませんので削除しておきます。functions.php に次のコードを書いておきます。

remove_action('wp_head', 'wp_shortlink_wp_head');

次は「JSON-LD による構造化データ出力」です。

エルピス ―希望、あるいは災い―

エルピス ―希望、あるいは災い―

渡辺 あや
2,200円(01/28 04:05時点)
Amazon
WordPress:robotsメタタグをプラグインなしで制御する
WordPress:OGPタグをプラグインなしで挿入する
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/01/26

WordPress:メニューのid,classを整理カスタマイズ

2023/01/19

WordPress:JSON-LD構造化データをプラグインなしで出力

2023/01/11

WordPress:OGPタグをプラグインなしで挿入する

2022/12/27

WordPress:canonicalタグをプラグインなしで制御する

2022/12/21

WordPress:robotsメタタグをプラグインなしで制御する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ214
  • WebTips108
  • javascript98
  • Joomla!88
  • Windows68
  • CSS63
  • Wordpress59
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Plamo33
  • Google32
  • はてなプラグイン25
  • php22
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • genesis6
  • ConoHa WING6
  • Git入門6
  • Python5
  • Android5
  • スマートフォン4
  • PC全般4
  • 静的サイトジェネレーター3
  • Firefox3
  • SSD3
  • Facebook3
  • Blankslate3
  • Docker3
  • Mactype2
  • GitHub2
  • youtube1
  • rails入門1
  • Twitter1
  • はてなブクマ1
  • 映画1
  • Xserver1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com