WordPressで特定ページ、すべてのカテゴリー、投稿詳細ページからカノニカルタグを削除する方法
WordPressサイトを運営していると、SEOに関する細かい設定が求められることがあります。
たとえば、特定のページやカテゴリーアーカイブページ、
投稿詳細ページからカノニカルタグを削除したいケースがあるかもしれません。
本記事では、これらの設定をPHPコードで簡単に実現する方法を解説します。
カノニカルタグとは?
カノニカルタグ(<link rel="canonical">)は、
検索エンジンに「このページがオリジナルコンテンツである」と伝える役割を持つタグです。
特に重複するコンテンツが存在する場合、どのページを優先的に
インデックスするかを指定するために用いられます。
ただし、特定のページやカテゴリーアーカイブページにカノニカルタグを出力したくないケースもあります。
カノニカルタグの削除を設定するコード
以下のコードでは、特定のページIDや特定のカテゴリー、
さらにすべてのカテゴリーアーカイブページとすべての投稿詳細ページから
カノニカルタグを削除する方法を紹介します。
コードをテーマの functions.php に追加することで適用されます。
function remove_canonical_buffer($buffer) {
// カノニカルタグを含む行を削除
return preg_replace('/<link rel=[\'"]canonical[\'"].+?\/>/i', '', $buffer);
}
function remove_canonical_tag_for_specific_pages_and_all_categories_single() {
$target_pages = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); // カノニカルタグを削除したいページIDを配列で指定
$target_categories = array('news', 'event', 'voice'); // カノニカルタグを削除したいカテゴリーのスラッグを配列で指定
if (is_page() && in_array(get_queried_object_id(), $target_pages)) {
ob_start('remove_canonical_buffer');
}
// すべてのカテゴリーアーカイブと投稿詳細ページ、特定のカテゴリーに該当する場合
elseif (is_category() || is_single() || (is_category() && in_array(get_queried_object()->slug, $target_categories))) {
ob_start('remove_canonical_buffer');
}
}
add_action('template_redirect', 'remove_canonical_tag_for_specific_pages_and_all_categories_single');
コードの解説
remove_canonical_buffer 関数
この関数は、カノニカルタグをHTML出力から削除するためのものです。
正規表現を使い、<link rel="canonical">タグを含む行を削除します。
remove_canonical_tag_for_specific_pages_and_all_categories_single 関数
この関数では、以下の条件に基づいてカノニカルタグを削除します。
特定のページID
$target_pages 配列に含まれるページIDに一致するページの場合、カノニカルタグを削除します。
特定のカテゴリー
$target_categories 配列に含まれるカテゴリーのスラッグ(news, event,voice)に
該当するカテゴリーアーカイブページの場合、カノニカルタグを削除します。
すべてのカテゴリーアーカイブページ
is_category() が true を返すすべてのカテゴリーアーカイブページでカノニカルタグを削除します。
すべての投稿詳細ページ
is_single() が true を返すすべての投稿詳細ページでカノニカルタグを削除します。
add_action(‘template_redirect’, ‘remove_canonical_tag_for_specific_pages_and_all_categories_single’);
この行は、template_redirectアクションフックにremove_canonical_tag_for_specific_pages_and_all_categories_single関数を
追加します。template_redirectは、テンプレートが読み込まれる前のタイミングで実行されるため、
カノニカルタグを削除するタイミングとして適切です。
注意点
キャッシュのクリア
コード変更後は、サーバーキャッシュやブラウザキャッシュを
クリアしてから変更が反映されているか確認してください。
SEOへの影響
カノニカルタグはSEOにおいて重要な要素の1つです。
設定を削除する際には、検索エンジンへの影響も考慮する必要があります。
まとめ
今回紹介した方法を使えば、特定のページ、すべてのカテゴリーアーカイブページ、
およびすべての投稿詳細ページからカノニカルタグを削除することができます。
特にSEO設定を細かく管理したい場合に役立つテクニックなので、ぜひ試してみてください。


【保存版】Splide スライダーで画像が表示されない・崩れる原因はLazy Loadだった!skip-lazyで一発解決する方法
11月 27, 2025WordPressで非階層タクソノミーをチェックボックス形式で扱う方法【開発者向けTips】
7月 30, 2025WordPressで症例ページを管理するカスタム投稿&分類設計ガイド【サンプル構成付き】
7月 23, 2025