WPで内容が未入力の記事をまとめてnoindexにする

wordpressでコンテンツ(内容)が未入力になっている記事を、関数を使ってまとめてNoindexにする方法。

それほど需要がないとは思いますが、ピンポイントで必要になったとき参考にしてみてください。

例えば、商品一覧を一括でインポートして、レビューを手動で書いていくんだけど、レビューがまだない状態のときは記事の中身がすっからかんなので、SEO的にもNoindexにしといたほうがいいんじゃね?と思いつつも一つ一つnoindexを付けていくのも面倒だし、下書きにしてしまうのもなんか違うなぁ・・・と感じたときとかに使えます!

noindexにするコード

下記のコードをfunction.phpに貼り付けます。

// コンテンツがない記事にNoindexをつける
add_action('wp_head', 'nocontents_noindex');
function nocontents_noindex(){

	if( is_single() ):
		if( !get_the_content() ):
			echo '<meta name="robots" content="noindex">';
		endif;
	endif;
}

内容が何も含まれない記事のヘッダに対してメタタグのnoindexが埋め込まれます。

その投稿になにかを書き込めばnoindexは自動で外れます。

文字数◯◯以下でnoindexにしたい場合はこんな感じで改良してください。

// コンテンツが●●文字以下の記事にNoindexをつける
add_action('wp_head', 'nocontents_noindex');
function nocontents_noindex(){

	if( is_single() ):
		if( mb_strlen( wp_strip_all_tags( get_the_content() ), 'UTF-8') <= ●): //●を任意の数字へ変更
			echo '<meta name="robots" content="noindex">';
		endif;
	endif;
}

indexとnoindexが混在する場合の挙動

使用しているテーマによってはindexが明示的に含まれている場合があります。

この状態で上記のコードを適用すると、記事のソース内にindexとnoindexが混在する状態となります。

2つのタグが混在する場合、Googleのクローラーがどのような挙動になるかというと、Noindexのほうが優先されるようです。

参照:https://webtan.impress.co.jp/e/2016/10/14/24082/page/1

より制限の厳しいほうのタグが適用されるとのことです。

中身のない記事にnoindexは必要か

ハッキリ言ってわざわざnoindexにする必要があるかどうか分からない。

一般的にはnoindexにしたほうがSEOとしては良いと言われているが、noindexにしたから順位が上がった~という体感はあまりない希ガス。

そもそもグーグルさんは、記事の質が低いと勝手にインデックスから除外してしまうので、こちらから敢えてnoindexをつける必要がない気もします。

サーチコンソールのカバレッジで「クロール済み – インデックス未登録」になるか、「noindex タグによって除外されました」になるかの違いだけかもしれません。