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設定を細かく管理したい場合に役立つテクニックなので、ぜひ試してみてください。
カスタム投稿タイプの条件分岐について
11月 13, 2024MW WP Formでカスタム投稿「shop」のカテゴリーを選択項目に追加する方法
11月 7, 2024カテゴリ別・投稿別にディスクリプションを動的に設定するWordPress関数
11月 1, 2024