Simply Staticでよくあるエラーと詰まりどころの対処法

# Simply Staticでよくあるエラーと詰まりどころの対処法

MV

Simply Staticで静的化を進めていると、書き出しが途中で止まる、意図しないページが公開される、動的な機能が消えるといった詰まりどころに出会うことがあります。この記事では、そうした症状を「エラーで止まる」「意図と違うものが書き出される」「動的機能が消える」の3系統に整理し、原因と対処法をまとめました。このサイトの本番移行で実際に遭遇したものを中心に扱います。

公開前に、生成元・画像・リンクを確認してから書き出すと、後戻りを減らせます。

静的化後は、フォームや検索など動的機能の動作を必ず別途確認してください。

目次

書き出しがエラーで止まる・完了しない

書き出しがエラーで止まる・完了しないで確認すべきポイントを整理します。

「Generate」を実行してもエラーメッセージが出て止まる、あるいは完了表示は出ているのに実際にはファイルが生成されていない、という症状です。原因はいくつか考えられます。

  • サーバー側のPHPメモリ上限や実行時間の制限に達している
  • 使用しているテーマのCSS記述がHTML解析エラーを起こしている(SWELLなど特定テーマで、CSS内のSVGパスの閉じタグ不足がエラーの原因になった事例が報告されています)
  • IP制限やBasic認証によって、書き出し処理からのアクセスがブロックされている

対処の順番としては、まずサーバーのPHP設定を確認し、次にテーマ側のCSS・HTML記述を確認し、最後にアクセス制限を一時的に解除してみる、という流れで切り分けていくと原因を絞り込みやすくなります。

サイトマップXMLが書き出しに含まれない

サイトマップXMLが書き出しに含まれないで確認すべきポイントを整理します。

サイトマップは、通常のクロールだけではZipファイルに含まれないことがあります。「General」タブの「Include」欄にある「Additional URLs」に、サイトマップ本体と、そこに掲載されている子サイトマップのURLを1行ずつ追加しておくと、書き出しにきちんと含まれるようになります。このサイトでは、次のようなURLを実際に登録しています。

  • サイトマップ本体のURL
  • 投稿用の子サイトマップのURL
  • 固定ページ用の子サイトマップのURL

ここでもうひとつ注意したいのが、投稿用の子サイトマップのURLに含まれる年月部分です。生成した月によって変わるため、この記事の手順をそのまま使い回すのではなく、実際に公開中のサイトマップを開いて、そのときの子サイトマップURLに読み替える必要があります。書き出しを終えたら、Zipファイルの中身を開いてサイトマップ本体と子サイトマップの両方が入っているかを機械的に確認しておくと安心です。

動的な参照が静的HTMLに残る

動的な参照が静的HTMLに残るで確認すべきポイントを整理します。

書き出したHTMLのソースを開くと、`wp-json`や`restUrl`のような、WordPress特有の参照が残っていることがあります。これは、テーマ側がJavaScript用のデータとしてAPIの参照先を出力しているためで、Simply Static側の「REST API書き出しをオフにする」設定だけでは消えません。

対処には2段構えが必要です。ひとつは、WordPress側(生成元)でテーマの出力箇所を子テーマから編集し、そもそも出力させないようにする方法。もうひとつは、静的化した後のファイルに対して、後処理のスクリプトで機械的に該当箇所を除去する方法です。このサイトでは、両方を組み合わせて対応しています。

意図しないページが書き出される・古い表示のまま残る

意図しないページが書き出される・古い表示のまま残るで確認すべきポイントを整理します。

公開したはずのページが書き出しに含まれていない、逆に削除したはずのページがそのまま残っている、という症状もあります。原因として多いのは、対象のページが下書き状態のままになっていることです。Simply Staticは公開済みのURLだけをクロールするため、下書きは無視されます。また、ホームページの指定がずれていると、意図しない固定ページがトップとして表示され続けることもあります。

対処としては、書き出す前に投稿一覧で公開状態を確認し、ホームページの設定も合わせて見直しておくことが有効です。

お問い合わせフォーム・検索・コメントが動かない

お問い合わせフォーム・検索・コメントが動かないで確認すべきポイントを整理します。

静的化した後に、フォームが送信できない、検索窓が反応しない、コメント欄が表示されない、という状態になることがあります。これらはいずれもPHPとデータベースに依存する機能で、静的なHTMLだけでは処理を完結できないために起こります。

この記事ではこれ以上深入りしませんが、フォームを静的サイトでも動かす具体的な方法は静的化したWordPressサイトでお問い合わせフォームを使う方法で紹介しています。

画像・OGP・共有リンクが崩れる

画像・OGP・共有リンクが崩れるで確認すべきポイントを整理します。

画像が表示されなくなる、SNSでシェアしたときのOGP画像が正しく表示されない、共有ボタンのリンクが壊れている、という症状もよくある詰まりどころです。原因は、書き出し時の「相対パスへの変換」設定にあります。この設定はHTML内のURLを一括で相対パスに変換しますが、OGPタグやサイトマップ、SNS共有用のリンクのように、絶対URLが必要な箇所まで巻き込んでしまいます。

h2-6後処理前後のOGPタグ比較

このサイトでは、書き出し後の後処理として、こうした箇所だけを本番の絶対URLへ戻すスクリプトを通す運用にしています。書き出したままの状態を「合格」にせず、後処理を通した後にもう一度、公開ページごとのタグと画像の応答を確認するところまでを一連の作業にしています。具体的な公開・デプロイの手順はWordPress静的サイトをCloudflareで公開する手順で扱っています。

よくある質問

よくある質問で確認すべきポイントを整理します。

Q. Simply Staticで書き出しに時間がかかりすぎるときはどうすればいいですか?

A. 書き出し時間はページ数や画像サイズに比例して長くなります。時間がかかりすぎる場合は、まずページ数を絞って原因を切り分け、特定のページや特定の画像で処理が止まっていないかを確認するのが最初の一歩です。

Q. Simply Staticの書き出しがエラーで止まる場合、最初に確認すべきことは何ですか?

A. まずはサーバー側のPHPメモリ上限と実行時間の制限を確認してください。多くのエラーはこの2つのどちらかに起因しています。それでも解決しない場合はテーマ側のCSS・HTML記述を疑います。

Q. 書き出したサイトでお問い合わせフォームが動きません。どうすればいいですか?

A. 静的なHTMLだけではフォームの送信処理は動きません。見た目は表示されても送信ボタンを押した瞬間に何も起こらない状態になります。外部のフォーム送信サービスへ置き換える必要があり、具体的な手順は別の記事で紹介しています。

Q. Simply Staticでサイトマップが正しく書き出されないのはなぜですか?

A. 通常のクロールだけではサイトマップが対象に含まれないためです。「Additional URLs」へサイトマップ本体と子サイトマップのURLを1行ずつ追加することで解決します。

Q. 書き出し後にOGP画像が表示されないのはなぜですか?

A. 書き出し時の相対パスへの変換設定が、本来は絶対URLが必要なOGPタグやSNS共有リンクまで巻き込んでしまうためです。書き出し後に、こうした箇所だけを本番の絶対URLへ戻す後処理が必要になります。

まとめ

まとめで確認すべきポイントを整理します。

Simply Staticの詰まりどころは、大きく分けると「書き出し自体がエラーで止まる」「意図と違うものが書き出される」「動的な機能が消える」の3系統に整理できます。このサイトの本番移行でも、この3系統それぞれで実際につまずきました。症状が起きたら、まずどの系統に近いかを見極めることが、対処への近道になります。

症状最初に確認すること
書き出しが止まるPHPメモリと実行時間
サイトマップがないAdditional URLsの登録
動的参照が残る生成元と後処理の両方

このサイトの運営者

目次