noindexを任意のページに出力する

ヘッダ画像

noindexを任意のページに出力する

SEOでは欠かせないmetaタグのnoindex
WordPressでは通常の静的HTMLサイトと違いテンプレートから一律にヘッダ情報が読み込まれることから、ページごとにnoindexを付けるのは面倒です。

「All in One SEO Pack」や「WordPress SEO by Yoast」などのプラグインでも可能ですが、これらを使わずより柔軟、かつ記事登校時に手間をかけないようnoindexタグを任意のページで出力させる方法を紹介します。

IF文を使った条件分岐で必要なページにmetaタグを出力

ヘッダテンプレート(header.php)に加えることで任意にnoindexタグを生成できます。
条件を指定すればいろんなページに自動出力できますので、いくつかパターンを用意しておきます。
なお、今回はnofollow属性はつけていませんが、用途に応じて変更ください。

カスタムフィールドで指定したページ

<?php
if (get_post_meta($post->ID, "noindex", true))
{
echo '<meta name="robots" content="noindex" />';
}
?>

記事投稿時にnoindexという名前のカスタムフィールドを作成して値を入力します。
このカスタムフィールドに入力があれば、noindexを出力するというシンプルなものです。
とくに値は指定していませんので、値は1でも0でもnoindexでも、適当なもので構いません。

日付アーカイブ・タグページ・検索ページ

<?ph
if (is_date() || is_tag() || is_search())
{
echo '<meta name="robots" content="noindex" />';
}
?>

日付アーカイブ・タグページ・検索ページには無条件でnoindexタグを出力します。
また、add_actionを用いてfunctions.phpで定義することもできます。

<?php
function no_index(){
if (is_date() || is_tag() || is_search()){
echo '<meta name="robots" content="noindex,nofollow">';
}
}
add_action('wp_head','no_index');
?>

指定カテゴリーに属するページ

<?php
if (in_category(array('カテゴリー1','カテゴリー2')
) && is_single()){
echo '<meta name="robots" content="noindex" />';
}
?>

カテゴリー1とカテゴリー2に属する記事にnoindexタグを出力します。
ちなみに&& is_single()という条件を外すとカテゴリーページにもnoindexタグが出力されます。

指定カテゴリーに属するページ+カスタムフィールドで指定したページ

<?php
if (in_category(array('カテゴリー1','カテゴリー2')
) && is_single() or get_post_meta($post->ID, "noindex", true))
{
echo '<meta name="robots" content="noindex" />';
}
?>

noindexタグ付与の実践事例

参考までにカスタムフィールドを使わず、ある程度の決められたルールでnoindexタグを自動付与する実用例パターンを付け加えておきます。

カテゴリーを含むアーカイブ系・タグページ・検索結果・ページの2ページ目以降

<?php
if(
is_archive() || //アーカイブ系ページ
is_tag() || //タグページ
is_paged() || //ページの2ページ目以降
is_search() //検索結果
){
echo '<meta name="robots" content="noindex">';
}
?>

カテゴリー以外のアーカイブ系・タグページ・検索結果・ページの2ページ目以降、および、指定の固定・カテゴリー

<?php
if((is_archive() && !is_category()) || //カテゴリー以外のアーカイブ系ページ
is_tag() || //タグページ
is_paged() || //ページの2ページ目以降
is_search() || //検索結果
is_page('ページID') || //指定の固定ページ
in_category("カテゴリースラッグ")) //カテゴリの記事
){
echo '<meta name="robots" content="noindex">';
}
?>

※既存記事も一括で処理できますし、投稿する際に何も考えなくてよいので、カテゴリーの条件分岐でnoindexタグを自動出力する形は楽かなと思います。
このあたりは既存のプラグインではなかなか難しいところです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

「トップに戻る」ボタンでスマホでのユーザビリティアップ!

ウェブサイト上でコンテンツを下にスクロールさせると「トップに戻る」ボタンが出現して、クリックするとビ […]

メールフォームプロCGIをWordPressに設置

WordPressのフォームについて、定番のContact Form7をはじめ、いろいろとプラグイン […]

WordPressで現在のページ表示に使用しているテンプレートをすべて知る

WordPressでは、投稿タイプに応じてデフォルトの構成テンプレートが適用されます。 ただし、プラ […]

マルチサイト構築方法まとめ

WordPressバージョン3.0以降に搭載されたマルチサイト機能の構築方法についてまとめます。 マ […]