Почему формы, созданные с помощью Contact Form 7 на поддомене WordPress, не отправляются?

Основной домен функционирует нормально, однако на поддомене, который является алиасом, возникает ошибка при отправке: "При отправке сообщения произошла ошибка. Пожалуйста, попробуйте ещё раз позже." Попытка добавить строку `Header set Access-Control-Allow-Origin "*"` в файл .htaccess не принесла результатов. При этом в консоли ошибок не наблюдается, функция mail() на поддомене работает, а WordPress REST API функционирует корректно, так как я получил JSON-ответ, зайдя на поддомен.сайт.ру/wp-json/.
  • 27 сентября 2024 г. 6:53
Ответы на вопрос 2
Проблема с отправкой форм на поддомене может быть вызвана несколькими факторами. Вот несколько шагов и рекомендаций, которые могут помочь вам решить проблему:

1. **Проверка настроек Contact Form 7**: Убедитесь, что форма настроена правильно. Проверьте все обязательные поля и настройки уведомлений (Email). Убедитесь, что email, на который отправляются уведомления, правильно указан.

2. **Проблемы с CORS**: Поскольку ваш поддомен является алиасом, возможно, политики кросс-доменных запросов (CORS) могут блокировать запросы, особенно если у вас разное доменное имя. Попробуйте изменить настройки CORS следующим образом:
   ```apache
   <IfModule mod_headers.c>
       Header set Access-Control-Allow-Origin "https://your-maindomain.com"
       Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
       Header set Access-Control-Allow-Headers "Content-Type"
   </IfModule>
   ```
   Обратите внимание на замену `https://your-maindomain.com` на ваш основной домен.

3. **Проверка конфигурации сервера**: Убедитесь, что серверный конфиг настроен таким образом, чтобы разрешить отправку почты с поддомена.

4. **Плагины и конфликты**: Отключите все плагины, кроме Contact Form 7, и проверьте, отправляется ли форма. Плагины могут конфликтовать между собой. Если форма начинает работать, постепенно включайте плагины обратно, чтобы выявить конфликтующий.

5. **Тема WordPress**: Попробуйте переключиться на стандартную тему WordPress, чтобы проверить, работает ли форма. Иногда тема может вызывать проблемы с правильным функционалом плагинов.

6. **Отладка**: Включите режим отладки WordPress, добавив следующее в `wp-config.php`:
   ```php
   define( 'WP_DEBUG', true );
   define( 'WP_DEBUG_LOG', true );
   define( 'WP_DEBUG_DISPLAY', false );
   ```
   Затем отправьте форму и проверьте файл логов (`wp-content/debug.log`) на наличие сообщений об ошибках, которые могут указывать на источник проблемы.

7. **Проверка консоли разработчика**: Если вы видите ошибку "При отправке сообщения произошла ошибка", откройте консоль разработчика в браузере (F12), перейдите к вкладке "Сеть" и проверьте, отправляются ли запросы AJAX на сервер, и какие ответы приходят в ответ на запросы.

8. **SMTP**: Если функция `mail()` на сервере работает, но отправка формы не проходит, попробуйте установить плагин SMTP, такой как WP Mail SMTP, для настройки отправки почты через SMTP. Это может значительно повысить вероятность успешной отправки почты.

Если после выполнения всех этих действий проблема всё еще не решена, рекомендую обратиться в службу поддержки хостинга или на форумы поддержки WordPress для дальнейшей помощи.
Поддомен сделан алиасом.
На поддомене при отправке ошибка "При отправке сообщения произошла ошибка. Пожалуйста, попробуйте ещё раз позже.".


Потому что во from (от) указывается домен отправителя. Поддомен - это уже другой сайт и поэтому на правильно настроенном сервере работать не должен.

Кроме того схема с алиасами чревата другими проблемами я бы крайне не рекомендовал её использовать.
Похожие вопросы