Tại sao Contact Form 7 bị lỗi trên các trang web tĩnh

Bạn xuất trang WordPress của mình sang HTML tĩnh. Biểu mẫu liên hệ của bạn ngừng hoạt động. Bạn thấy lỗi 404 trong console.

Contact Form 7 cần PHP. Nó sử dụng REST API để xử lý dữ liệu. Các trang web tĩnh không có PHP. Không có PHP đồng nghĩa với việc không có REST API.

Một số người đổ lỗi cho CORS. Một header CORS sẽ không thể khắc phục việc thiếu máy chủ. Bạn cần một backend để xử lý email.

Nếu bạn sử dụng Simply Static Pro, hãy kiểm tra quyền truy cập tệp (file permissions). Một tệp JS bị thiếu sẽ gây ra lỗi này. Hãy chạy lệnh sau:

chmod 644 /var/www/html/wp-content/plugins/simply-static-pro/assets/ssp-form-webhook-public.js

Chạy lại quá trình export.

Hai cách để khắc phục điều này:

  • Giữ WordPress trên một subdomain. Sử dụng nó làm API của bạn. Thêm các header CORS vào tệp .htaccess.
  • Sử dụng một dịch vụ biểu mẫu tĩnh (static form service). Hãy thử Formspree hoặc Netlify Forms.

Cách gỡ lỗi (debug):

  • Truy cập URL WordPress của bạn và thêm /wp-json/ vào sau. Nếu bạn thấy lỗi 404, backend của bạn đang ngoại tuyến (offline).
  • Mở DevTools. Gửi biểu mẫu của bạn. Tìm kiếm các lỗi 404 hoặc CORS.
  • Kiểm tra tệp forms.json của bạn. Đảm bảo endpoint trỏ đến tên miền WordPress của bạn.

Đừng chỉ điều trị triệu chứng. Hãy sửa chữa kiến trúc (architecture) của bạn.

Source: https://dev.to/rahul_sharma_15bd129bc69e/why-contact-form-7-breaks-on-static-sites-and-what-to-do-about-it-jg5