自分のためのメモ

検索結果ページがいつの間にかnoindexとなっている

WordPressサイトに於いて、キーワード検索や条件検索などを行って表示された検索結果一覧ページのソースコードを見ると、metaに「noindex」が入っていた。SEO系のプラグインの設定も見直したが、そういった指定は見当たらなかった。

ググると、WordPress5.7からwp_robotsという関数が導入され、meta robotsタグの出力仕様が大幅に変更となったらしい。
これらはfunctionなどで制御が可能。
〇〇の検索結果の一覧というページもインデックスさせたい場合は、

function.phpへの記述で対応する場合

remove_filter( 'wp_robots', 'wp_robots_noindex_search' );

何かしらの理由でfunctionは触りたくないというケースでは以下でも可能

header-meta.phpへの記述で対応する場合

<?php 
// wp_head(); 
?>
<?php 
	if ( is_search() ) {
		ob_start();
		wp_head();	
		$metahead = ob_get_contents(); 
		ob_end_clean();
		$metahead = str_replace('noindex, ','',$metahead);
		$metahead = str_replace('nofollow, ','',$metahead); // おまけ
		echo $metahead;
	}else{
		wp_head();	
	}
 ?>

テンプレートによって記述内容はマチマチだが、もしwp_head()を元々読み込んでいる場合は、必ず置き換えるかコメントアウトしておかないと正常に動かない。

追記:

URLの?s=の後にスパムワードを付与し、膨大なアクセスを発生させ、検索結果にインデックスさせるなどのスパム行為を防ぐために、敢えて検索結果ページをnoindexとしている方も多いようなので、アクセス解析時などにおかしなパラメータを見つけたら、noindexに戻しておいたほうがよいかもしれない。