特定のカテゴリー記事を一括 noindex にするコード(WordPress)

WordPressのブログで、ライトな記事も書いていますが、検索エンジンからは評価が下がってしまう、、。

そんな時に、特定のカテゴリーの記事を丸っと、noindexに設定する方法です。カテゴリーページでなく、カテゴリーに属している記事に、noindexを出力します。

カテゴリーアーカイブのページをnoindexする方法は、本記事では触れていませんので、よろしくお願いします。

functions.phpがわかる方向けの記事です。操作を間違えると、WordPressが真っ白になります。そうなっても、自力で復旧できる方向けの記事です。自己責任でよろしくお願いします。

カテゴリーに属している記事に noindexを出力

// カテゴリー ID 123  に属する記事は noindex
add_action( 'wp_head', 'add_noindex_to_category_single' );
function add_noindex_to_category_single() {
  if( has_category('123') ) { 
    echo '<meta name="robots" content="noindex,nofollow" />';
  }
}

このコードを、functions.php に追記します。has_category関数 を使っています。

カテゴリー IDの調べ方は、カテゴリーの編集画面を開いたときのURLの中に表示されています。

本記事では、IDナンバー 123 を例にしています。この数字を変更します。

複数のカテゴリーを指定したいときは、

 if( has_category('123') ) { 
を
 if( has_category(array( 123, 234, 345 )) ) { 

と、配列にします。

なお、スラッグでも大丈夫なハズです。

has_category('example')

has_category(has_category('example'))

なのですが、過去に、なぜかスラッグだと、うまく動作しないときがあったので、IDで指定しています。

親カテゴリーを指定して、子カテゴリー 全部一括で noindex

//指定カテゴリー(子カテゴリーも含む)にnoindexタグを出力 
//カテゴリースラッグの部分を変更する
//mono96.jp 2018-12-23

  function my_add_noindex_catgory_function(){
	$cat = get_category_by_slug('diary');
	$cat_id = intval($cat->cat_ID);
	$cat_childs = get_term_children($cat_id, 'category');
  
  //カテゴリーを追加する
	//$cat_childs [] = 'カテゴリースラッグ'; 
	$cat_childs [] = 'podcast'; 
	  
    if (in_category($cat_childs) )
    {echo '<meta name="robots" content="noindex,nofollow"/>';
	}
}

add_action( 'wp_head', 'my_add_noindex_catgory_function' );

上のサンプルでは、

カテゴリースラッグで、指定するサンプルです。IDでなく、スラッグです。

  • diary
  • podcast

に属している、子カテゴリーも全部、no index になります。

これは、本ブログで実際に、2019-12時点で、稼働しているコードです。

日記記事の diary カテゴリーの中に、たくさんの子カテゴリーがあり、一つ一つ指定するのが、めんどうだったので、このコードを使っています。

講座 開催予定

この記事を書いた人

ブログコーチ 大東 信仁

ニックネーム ものくろ。株式会社 あみだす 代表取締役、Web&Blogコーチ、WordPressが得意。