ワードプレスでサイトマップが404エラーで見つからない場合

製作 プログラム

2016/06/27(月)

サイトマップが404エラーになる

とてつもなくマイナーな原因だったのですが、sitemap.xmlが404エラーになってしまったのでその対策を。

ぼくの場合functions.phpにある記述を増やしたのが直接の原因だったのですが、特定のプラグインでもおなじ処理をしている場合起こるかもしれません。

sanitize_file_nameというフックが原因

sanitize_file_nameというフックを使うと画像をアップロードしたときにファイル名を自動で付け直すことができます。

ぼくはプラグインではなくfunctions.phpに書いてこの処理を行っていたのですが、このsanitize_file_nameはどうやらメディアファイルのアップロード時だけでなくsitemapがプラグインで自動生成されるときでも呼び出されるフックのようで、「sitemap.xml」という名前で保存しようとしていてもこのフックで名前が変わってしまい、結果sitemap.xmlではなく別のヘンな名前のxmlファイルが生成されていました。

原因発生時「All in One SEO」というプラグインのXMLサイトマップ機能でsitemap.xmlを自動生成していました。

下記コードの4行目がとりあえずsitemapのリネーム防止のためにfunctions.phpに追加したコードです。


function rename_mediafile($filename) {
	$info = pathinfo($filename);
	$ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
	if( $info['filename'] != 'sitemap' ){
		$filename = strtolower(time().$ext);
	}
    return $filename;
}
add_filter('sanitize_file_name', 'rename_mediafile', 10);

おかしくなったらプラグイン停止の他にfunctions.phpもチェックしよう

ワードプレスの挙動がおかしくなったらプラグインを停止することはよく行うと思いますが、同じようにfuncitions.phpもみなおすようにすると原因特定が早まるということが今回わかりました。

自分が書いた数行のシンプルなコードがまさか悪さすることはないだろう、という考えがいけなかったですね笑