Featured image of post 【StaticPress】sitemap関連のファイルが出力されない場合の対処方法

【StaticPress】sitemap関連のファイルが出力されない場合の対処方法

1601文字

StaticPressでsitemapが転送されない

あれ、sitemapが無い・・・?

先日、Wordpressサイトにおけるsitemapファイルの自動生成プラグインの導入方法について紹介しました。
関連記事 【SEO】Sitemapを出力してくれるWordpressプラグイン「Google XML Sitemaps」のインストール方法 2018/05/11 994文字 約2分で読めます

基本的にはこのプラグインを利用していれば問題は無いのですが、StaticPress等を利用してS3バケットでサイト運用をする際は、そのままだとsitemapファイルやrobots.txtファイルが転送されません。
関連記事 【StaticPress】WordpressのブログやサイトをHTML化して爆速管理しよう【使い方/インストール】 2018/05/05 3820文字 約8分で読めます

sitemapがないと、検索エンジン正しくサイトコンテンツを解析してくれないので、PVが伸びにくくなってしまいます。
アドセンスアフェリエイトをやっている方だとPVの伸び悩みは深刻な問題ですよねorz

現状の確認

試しに、sitemap.xmlが生成されている状態で、管理画面から再構築ボタンをクリックし、出力ディレクトリを確認したところ、確かにsitemap関連のxmlとrobots.txtが対象ディレクトリに出力されていませんでした。

StaticPress出力ディレクトリ
ls -la
合計 164
drwxr-xr-x 14 apache apache  4096  5月 12 06:06 .
drwxr-xr-x  7 apache apache  4096  4月 25 17:24 ..
drwxr-xr-x  4 apache apache  4096  5月 12 06:06 2018
-rw-r--r--  1 apache apache 49707  5月 12 06:06 404.html
drwxr-xr-x  3 apache apache  4096  5月 12 06:06 author
drwxr-xr-x  4 apache apache  4096  5月 12 06:06 category
drwxr-xr-x  3 apache apache  4096  5月 12 06:06 comments
drwxr-xr-x  2 apache apache  4096  5月 12 06:06 feed
-rw-r--r--  1 apache apache 53292  5月 12 06:04 index.html
drwxr-xr-x  5 apache apache  4096  5月 12 06:05 wp-admin
drwxr-xr-x  4 apache apache  4096  5月 12 06:06 wp-content
drwxr-xr-x  7 apache apache  4096  5月 12 06:06 wp-includes
drwxr-xr-x  2 apache apache  4096  5月 12 06:06 wp-json
drwxr-xr-x  3 apache apache  4096  5月 12 06:06 未分類

確かに出力されていませんね。

このままだと、StaticPressS3を使ってS3バケットに転送されないので、SEO対策が足りていない状態となります。
また、GoogleSearchConsoleへの登録も出来ません。

原因は既存バグ?

原因を特定するために、pluginのソースを読んで見たところ、class-static_press.phpに原因がありました。

まずは、658行目辺りをみると、sitemap.xmlやrobots.txtをクローリングするための関数は定義されています。
ここではSEO関連ファイルをseo_filesというグループで定義しています。

/wp-content/plugins/staticpress/includes/class-static_press.php
//658行目辺り
// Check correct sitemap url by robots.txt
private function seo_url($url_type = 'seo_files'){
・・・
}

では、次に実際にファイル出力をしているところを確認してみました。
373行目辺りを見ていると、クローリング対象のファイルを出力している部分があるのですが、ここで先ほどの関数で定義したseo_files出力対象として指定されていませんでした。

switch ($file_type) {
		case 'front_page':
		case 'single':
		case 'term_archive':
		case 'author_archive':
		case 'other_page':
			// get remote file
			・・・

手順

[adsense]

一行追加するだけ

では、原因は特定出来たので、問題を解決するために以下の一行をcase句に追加してみましょう。

/wp-content/plugins/staticpress/includes/class-static_press.php
//375行目辺り
case 'author_archive':
case 'seo_files'://追加
case 'other_page':

確認

修正が終わったら、もう一度再構築ボタンをクリックしてみましょう。

ls -la
合計 236
drwxr-xr-x 14 apache apache  4096  5月 13 06:00 .
drwxr-xr-x  7 apache apache  4096  4月 25 17:24 ..
drwxr-xr-x  4 apache apache  4096  5月 13 06:00 2018
-rw-r--r--  1 apache apache 49707  5月 13 06:00 404.html
drwxr-xr-x  3 apache apache  4096  5月 13 06:00 author
drwxr-xr-x  4 apache apache  4096  5月 13 06:00 category
drwxr-xr-x  3 apache apache  4096  5月 13 06:00 comments
drwxr-xr-x  2 apache apache  4096  5月 13 06:00 feed
-rw-r--r--  1 apache apache 53292  5月 13 05:58 index.html
-rw-r--r--  1 apache apache 49707  5月 13 06:00 robots.txt
-rw-r--r--  1 apache apache   998  5月 13 06:00 sitemap-misc.xml
-rw-r--r--  1 apache apache   849  5月 13 06:00 sitemap-pt-page-2018-04.xml
-rw-r--r--  1 apache apache   867  5月 13 06:00 sitemap-pt-post-2018-04.xml
-rw-r--r--  1 apache apache   890  5月 13 06:00 sitemap-pt-post-2018-05.xml
-rw-r--r--  1 apache apache  1199  5月 13 06:00 sitemap.xml
drwxr-xr-x  5 apache apache  4096  5月 13 05:59 wp-admin
drwxr-xr-x  4 apache apache  4096  5月 13 06:00 wp-content
drwxr-xr-x  7 apache apache  4096  5月 13 06:00 wp-includes
drwxr-xr-x  2 apache apache  4096  5月 13 06:00 wp-json
drwxr-xr-x  3 apache apache  4096  5月 13 06:00 未分類

正常に出力されるようになりましたね♪
もちろんS3バケットにも転送がされています。

終わりに

以上のように、プラグインのソースコードを修正しないと直らない問題でした。

原因さえ分かれば1行の修正で直るので、もし同じようにハマって困っている方がいましたらこの記事を参考にしてみてください。