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 カテゴリーの中に、たくさんの子カテゴリーがあり、一つ一つ指定するのが、めんどうだったので、このコードを使っています。