静的サイトで Contact Form 7 が動作しなくなる理由
WordPress サイトを静的 HTML にエクスポートすると、お問い合わせフォームが機能しなくなります。コンソールには 404 エラーが表示されます。
Contact Form 7 には PHP が必要です。このプラグインはデータを処理するために REST API を使用します。しかし、静的サイトには PHP がありません。PHP がなければ、REST API も存在しないことになります。
CORS のせいにする人もいますが、CORS ヘッダーを追加したところで、サーバーが存在しないという問題は解決しません。メールを処理するためのバックエンドが必要です。
Simply Static Pro を使用している場合は、ファイルのパーミッションを確認してください。JS ファイルが不足していることが原因でこのエラーが発生することがあります。次のコマンドを実行してください:
chmod 644 /var/www/html/wp-content/plugins/simply-static-pro/assets/ssp-form-webhook-public.js
再度エクスポートを実行します。
解決策は 2 つあります:
- WordPress をサブドメインで運用する。それを API として利用する。
.htaccessファイルに CORS ヘッダーを追加する。 - 静的フォームサービスを利用する。Formspree や Netlify Forms を試してみてください。
デバッグ方法:
- WordPress の URL の末尾に
/wp-json/を付けてアクセスする。404 が表示される場合は、バックエンドがオフラインになっています。 - デベロッパーツールを開く。フォームを送信する。404 または CORS エラーが出ていないか確認する。
forms.jsonファイルを確認する。エンドポイントが WordPress のドメインを指していることを確認する。
対症療法ではなく、アーキテクチャを根本から修正してください。