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 タグによって除外されました」になるかの違いだけかもしれません。
コメント