Форма обратной связи для сайта WordPress без плагинов

Доброго здоровья всем читателям блога! Сегодня сделаем очередной шаг к оптимизации проекта, установив форму обратной связи для WordPress сайта или блога. Причем устанавливать будем, не прибегая к помощи плагинов, а используя средства HTML и PHP.

Вообще, некоторые плагины серьезно нагружают сервер, поэтому необходимо, как только возможно доступными средствами, уменьшать эту нагрузку. Например, я недавно с помощью администрирования баз данных MySql посредством phpMyadmin произвел очередную оптимизацию этих баз данных, существенно снизив их объем.

Форма обратной связи для блога WordPress

Поэтому замена плагинов HTML и PHP кодом также положительно влияет на решение данной задачи. Конечно, совсем без плагинов обойтись невозможно, но нужно стремиться к уменьшению их числа. Именно, одна из таких возможностей реализуется сегодня на ваших глазах, когда мы установим форму обратной связи WordPress. Хочу отметить, что данную форму обратной связи можно установить именно на тех страницах, где она нужна, например, на странице “Контакты”.

Создание формы обратной связи

Для того, чтобы сконструировать форму обратной связи на блоге Вордпресс, первым шагом необходимо создать файл, который будет содержать соответсвующий код. Назовем файл, к примеру, mail.php и поместим его в папку с названием вашей темы. Для этого соединимся с серверов хостинга посредством протокола FTP, используя ФТП клиент либо замечательный редактор notepad++.

После удачного соединения в правом окне редактора notepad++ будет список всех папок (директорий) и файлов вашего сайта. Выбирайте паку с вашей темой. Обычно она находится по адресу:

public_html/ваш_сайт/wp-content/themes/название_вашей_темы/

Подводите курсор к папке с названием вашей темы, кликаете по ней правой кнопкой мышки и из выпадающего меню выбираете «Create new file».

После этого появится маленькое диалоговое окно «Please enter the name of the new file», куда надо ввести название файла (например, mail.php). Эти действия позволят создать файл прямо на сервере. Теперь выберите этот файл и нажмите зеленую стрелочку, направленную вниз, с выпадающим текстом «Download file», после чего созданный файл будет загружен на компьютер и готов к редактированию. Окно для редактирования слева, введите туда следующий код:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
 
if (isset($name) && isset($email) && isset($sub) && isset($body)){
 
$address = "goldbusinessnet@gmail.com";
$mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";
$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
if ($send == 'true')
{echo "Сообщение отправлено, теперь Вы можете перейти на главную страницу и продолжить чтение <a href='/'>Goldbusinessnet.com</a>";}
else {echo "Ошибка, сообщение не отправлено!";}
 
}
else
{
echo "Вы заполнили не все поля, необходимо вернуться назад!";
}
?>

Внимание! Прежде, чем копировать, необходимо изменить следующие строчки:

10 — $address= “сюда вписываете свой адрес электронной почты, на который вам будут приходить сообщения от читателей ” (обязательно),
строчки 14, 15 и 20 можете изменить по желанию, то есть ввести свой текст, который будет отображаться.

Небольшое дополнение. Если хотите, чтобы после отправки сообщения осуществлялось автоматическое перенаправление на главную (или на любую другую) страницу блога, в созданном файле mail.php верхнюю строчку нужно заменить на следующую:

<meta http-equiv='refresh' content='6; url=/'>
<meta charset="UTF-8" />

Здесь цифра 6 означает время в секундах, по истечении которого произойдет редирект на главную страницу. Естественно, вы можете изменить это число на свое. Кроме того, не забудьте вместо названия моего блога поставить адрес своего ресурса, причем не обязательно URL главной страницы.

Теперь сохраняете файл обязательно в кодировке UTF-8 (без ВОМ) в редакторе notepad++ и загружаете его на хостинг, используя зеленую стрелку «Upload file», теперь уже направленную вверх. Все, новоиспеченный файл mail.php теперь находится на хостинге, причем, поскольку он помещен в папку с названием вашей темы, то может теперь редактироваться прямо из админ панели «Внешний вид»→«Редактор»→«Редактировать темы».

Для того, чтобы форма обратной связи начала работу, необходимо вставить следующий код на любую страницу (можно создать отдельную страницу «Контакты», как у меня)  в визуальном редакторе админ панели WordPress:

<h2>Форма обратной связи</h2>
<form name="MyForm" action="/wp-content/themes/cloudy/mail.php" method="post">
<p><input class="input" name="name" type="text" style="width:25%" /> Ваше имя</p>
<p><input class="input" name="email" type="text" style="width:25%" /> Электронная почта</p>
<p><input class="input" name="sub" type="text" style="width:25%" /> Тема сообщения</p>
<p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:76%" /></textarea></p>
<p><input value="Отправить" type="submit" /></p>
</form>

Здесь тоже надо внести кое-какие изменения. Во второй строчке вместо cloudy необходимо вписать название своей темы. Также можете отредактировать некоторые значения длины и ширины полей, а также текстового поля с помощью параметров свойства width. Теперь после сохранения форма обратной связи для блога WordPress будет выглядеть следующим образом:

Пример формы обратной связи

После всех вышеописанных действий можно протестировать работу установленной формы. Введите адрес электронной почты и какой-нибудь текст. Если все в порядке, то вы получите на почту это сообщение. Такой вот формой обратной связи я и пользуюсь. Надеюсь, изложил понятно и доходчиво и теперь молодые вебмастера смогут эффективно использовать мой опыт. А какой формой обратной связи пользуетесь вы? Призываю делиться своим опытом в комментариях.

P.S. Уважаемые читатели, обращаю внимание на то, что текст статьи обновлен и устранены некоторые погрешности в коде, которые были допущены. Теперь форма обратной связи работает безупречно.

Поделиться с друзьями
Игорь Горнов

Создатель и администратор сайта Goldbusinessnet.com. Участник нескольких успешных проектов и автор более 1000 статей о работе в интернете, создании сайтов, полезных программах и сервисах.

Работа в интернете
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Валера

    Да не, тогда уж лучше с плагином чем кучу кода писать)) Или даже конструктор любой использовать, например, stepform.io/ru это уж если совсем не хочется заморачиваться. А для Ворпдресса и Contact Form 7 с головой хватает.

    Ответить
    1. Игорь Горнов автор

      Валера, на вкус и на цвет…У каждого свои задачи и приоритеты.

      Ответить
  2. Михаил

    С плагинами все же намного проще и быстрей формы создавать получается, чем код писать. Вот тут в списке нашел пару плагинов unetway.com/blog/wordpress-plugins-create-forms В самый раз для новичков будут полезны.

    Ответить
  3. Яна

    Для меня сложновастенько выше описанное, пользовалась ранее CF7, но теперь и вам бы рекомендовало, чтобы сделать всё быстро и не заморачиваться, плагин на wordpress от Формдизайн. Спасибо автору за комментарии и помощь всем пользователям

    Ответить
  4. Алексей

    Без плагинов это долго, да и с кодом возиться. Тем кто побыстрей, обычно Contact Form берут. Я например сейчас эти плагином начал пользоваться https://ru.wordpress.org/plugins/ucalc/

    Ответить
  5. Александр

    Да… Для новичков может и обработчик нормальный, Но..
    Вот это вот зачем?

    <meta charset="UTF-8" />

    Совершенно не к чему. Это нужно указывать в headers. Другая сторона, в форме вообще нет никакой обработки пользовательских данных, пусть даже форма с бд не работает, но это неправильно, Очень неправильно. Вводи что хочешь.
    И вот это

    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}

    Я так понимаю что это взято у господина Попова. Что за ерунда… Сначала вы создаете переменную а потом ее удаляете, тогда уж вот так

    if (isset($_POST['name']) && $name != '') {$name = $_POST['name'];}

    Плюс нет вообще никакой валидации. Мое мнение таково, прежде чем давать такие формы новичкам, сами разберитесь в ней, что и как должно работать.
    А то новички поскачивают такие горе формы и потом ходят по форумам и жалуются что видители нет защиты от XSS атак — что делать? На сайте появился левый код — где его искать?
    А все почему? Потому что уважаемый господин Попов не удасужился в свое время написать нормальный курс и теперь все кто учился по нему считают себя отличными прогерами. Я против г-на Попова ничего не имею, просто видно юыло что он не научить хочет, а бабла срубить.
    Нужно писать серверный код грамотно и безопасно, а не чтоб лижбы работал.
    Если есть претензии по коменту ко мне, пишите, без проблем отвечу.

    Ответить
    1. Игорь Горнов автор

      Александр, Вы высказали свою точку зрения, хотя я со многим не согласен касаемо Евгения Попова, по отношению к которому, по-моему, Вы слишком категоричны. Я в свое время тоже пользовался многими его продуктами и не могу сказать, что полученная информация была бесполезной.

      Кстати, данная форма получена не с его уроков, так что здесь Ваши подозрения беспочвенны. Ежели Вы специалист в данной области, то вполне можете предложить свой вариант, я с удовольствием его опубликую со ссылкой на Ваш источник. Спасибо за качественный и предметный комментарий.

      Ответить
  6. артем

    к сожалению, на php-7.0 форма не отправляет письма. не подскажете, как можно адаптировать форму для последней версии php?

    Ответить
    1. Игорь Горнов автор

      К сожалению, Артем, я пока не занимался этим вопросом. Попробуйте погуглить.

      Ответить
  7. Николай

    Спасибо,форма заработала сразу и без проблем.Теперь буду настраивать.Ущё раз СПАСИБО.

    Ответить
  8. Юрий

    Сделал все, как вы написали, форма связи все равно не работает. Выдает следующее: Запрошенную информацию найти не удалось. Возможно, будет полезен поиск по сайту.

    Ответить
    1. Игорь Горнов автор

      Юрий, такое вполне возможно, тут многое зависит от темы. Попробуйте поискать в сети альтернативный вариант.

      Ответить
  9. Mir-On

    Спасибо за статью!

    Ребят, попробуйте сервис от http://pozvonim.com
    Простая установка на любую cms, хорошая поддержка. Не сочтите за рекламу, ссылка не реферальная, просто можно взять и попробовать на тестовый период. А потом уже решить подходит или нет. Цены как у всех, можно пакеты брать, а можно количество клиентов или минут. Лидогенерация очень высокая, а окупаемость быстрая. Может кому пригодиться мой комментарий

    Ответить
  10. Татьяна Суркова

    Игорь, вы чудо. Я от души благодарю вас за этот пост, сделала форму обратной связи по вашим рекомендациям, и у меня всё получилось, смотрю и радуюсь. Только одна просьба, если не трудно, загляните ко мне на блог в раздел «страничка обратной связи» и взгляните, как форма там смотрится, не надо ли размеры изменить? Просто я сама незрячая, вот и нужен взгляд со стороны. Ещё раз огромное спасибо за статью, удачи вам и огромного трафика блогу.

    Ответить
    1. Игорь Горнов автор

      Татьяна, спасибо за отзыв. А форма обратной связи выглядит корректно и вписывается в дизайн.

      Ответить
  11. Макс

    Прошу прощения. Сделал все, как вы сказали. Уже все перепробовал, но когда нажимаю кнопку «отправить» вылезает следующая страница: «Oops! That page can’t be found.
    It looks like nothing was found at this location. Maybe try one of the links below or a search?»
    Пожалуйста помогите!

    Ответить
    1. Игорь Горнов автор

      Макс, форма рабочая, проверьте все еще раз.

      Ответить
  12. Ирина

    Спасибо! Отличная формочка! Всё работает! Ура )

    Ответить
  13. Владимир

    установил форму, но при отправке сообщения пишет: «Ошибка, сообщение не отправлено!» В чем может быть проблема?

    Ответить
    1. Игорь Горнов автор

      Владимир, почитайте выше находящиеся комментарии, здесь уже много раз разбирались похожие проблемы. Возможно, найдете решение.

      Ответить
  14. Павел

    Спасибо, форма пригодилась!
    Только строку

    <meta charset="UTF-8" />

    нужно ставить в самом верху (выше

    <meta http-equiv='refresh' content='6; url=http://goldbusinessnet.com/'>

    ), иначе в некоторых случаях бывают кракозябры. Браузер должен ясно понимать, в какой кодировке текст на странице. У меня из-за этого даже refresh не срабатывало

    Ответить
  15. Павел

    Спасибо, форма пригодилась!
    Только строку нужно ставить в самом верху (выше ), иначе в некоторых случаях бывают кракозябры. Браузер должен ясно понимать, в какой кодировке текст на странице. У меня из-за этого даже refresh не срабатывало

    Ответить
  16. Николай

    Зачем создавать файл mail.php, если он существует в теме для отправки сообщений от WordPress на комментарии. Тогда нужно просто на страницу «Контакты» вставить код самой таблицы и всё.

    Ответить
    1. Игорь Горнов автор

      Конечно, Николай, если в Вашей теме он есть, то и хлопот меньше. Но я то публикую материал для всех читателей.

      Ответить
  17. Азат

    почти получилось!!!!!!! теперь когда в в форме где строка тема: если написано на русском то письмо не доходит, в чем может быть дело? может я вам скину скрин кода?

    Ответить
    1. Игорь Горнов автор

      Азат, скорее всего, дело в нарушении кодировки. Она должна соответствовать той, что установлена на Вашем сайте.

      Ответить
  18. Азат

    Здравствуйте! подскажите пожалуйста! уже ставил и плагин Contact form 7, пишет что письмо отправлено, а у меня на почте не появляется…
    теперь пытался сделать как у Вас, но тоже не вышло, когда нажимаю отправить то появляются вопросы… посмотрите пожалуйста, подскажите уже 2 день вожусь с этим http://geek-mobile.ru/?page_id=185

    Ответить
  19. Ольга

    Контакт форм 7 выдаёт ошибку. Прям не знаю, что делать.

    Ответить
    1. Игорь Горнов автор

      Ольга, Даже не знаю, что Вам посоветовать. Попробуйте альтернативный вариант в виде другого плагина или обратитесь на специализированные форумы к знатокам по данному профилю.

      Ответить
      1. Ольга

        Обратилась к поддержке хостинга, ответили, что проблема в нехватке оперативной памяти.

        Ответить
        1. Игорь Горнов автор

          Ольга, не хватает оперативки на сервисе хостинга для работы формы обратной связи? Не думал, что такое возможно… Странно.

          Ответить
          1. Ольга

            Невозможное возможно) обновила тариф и всё заработало.

          2. Игорь Горнов автор

            Ну, понятно, я так и думал.

  20. Ольга

    Рожи просто отпад)

    Ответить
  21. Игорь Горнов автор

    Да, кнопка может стать решением проблемы, по крайней мере, на первое время. Ольга, а Вы уверены, что не доходит? У Вас почта на Gmail? Если нет, попробуйте использовать гмейловскую либо загляните в папку «Спам».

    Ответить
    1. Ольга

      Да, уверена. Почта на яндексе, но гмейл тоже попробовала, не приходит. Попроюу. контакт форм 7, на форуме сказали, что с ним всё всегда приходит) хотя не хотела плагины ставить, мне всего лишь простейшая форма нужна.

      Ответить
  22. Ольга

    Добрый день!
    Подскажите, как вставить форму в сайдбар?
    Спасибо!

    Ответить
    1. Игорь Горнов автор

      Ольга, а стандартный способ не проходит?

      Ответить
      1. Ольга

        Просто хотела, чтобы форма связи отображалась на каждой странице сайта. Впрочем. я подумала уже, что можно просто кнопку с помощью виджета создать, ведущую на страницу с формой.
        Извините, что тему меняю — но у меня вот уже третий вариант формы (был плагин, потом вариант без плагина) и ни с какой не получается отправить сообщение. Точнее, оно уходит, но до почты не доходит. Не подскажете, в чём может быть дело? Спасибо!

        Ответить
  23. Вячеслав

    ни чего не получается все сделал как надо UTF-8 код в менеджере такой же страница опубликована выдает Ошибка 404. Страница не найдена

    Ответить
    1. Игорь Горнов автор

      Вячеслав, подавляющее большинство удачно интегрирует данную форму обратной связи, я в том числе. Возможно, дают знать о себе особенности Вашей темы. Подыщите альтернативный вариант, попробуйте для начала поставить плагин.

      Ответить
  24. Надежда Юрьевна

    Скажите, пожалуйста, я все делаю а у меня выодит такая ошибка. Что нужно исправить. Спасибо!!!!
    Not Found

    The requested URL /wp-content/themes/Splendio/mail.php was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    Ответить
    1. Игорь Горнов автор

      Надежда Юрьевна, такое сообщение означает, что файл mail.php не обнаружен на сервере. Нужно проверить, правильно ли Вы его расположили.

      Ответить
  25. Кирилл

    Приветствую! Все работает))) Двое суток возился с плагинами (ни один не заработал!!!) и тут эта статья!!! Спасибо!!!
    Но, у меня вопрос? Можно ли например вместо тема письма, вставить выпадающий список, а там уже в свою очередь конкретно предложенные темы обращения?

    Ответить
    1. Игорь Горнов автор

      Кирилл, можно, конечно, но по этому вопросу Вам лучше обратиться узкопрофильному специалисту, который все сделает красиво.

      Ответить
  26. Алевтина

    Спасибо за форму! Все прекрасно работает)

    Ответить
  27. Сергей

    Как сделать, что бы тема письма всегда была определенной по-умолчанию?
    Поконкретнее: нужно убрать в форме на сайте «Тема сообщения» (это делается без проблем), а письмо на почту приходило с заданной в коде темой.

    Ответить
    1. Игорь Горнов автор

      Сергей, не думал об этом.

      Ответить
  28. Антон

    С первой пробы получилось поставить форму, проверку прошла успешно! Избавился от плагина форм7 и капчи к нему. Единственное чего хотелось бы к этой форме http://series-all.ru/kontakty/ добавить css стилей, вы бы добавили в статью пару простых примеров оформления.

    Ответить
    1. Игорь Горнов автор

      Хорошо, Антон, прислушаюсь к Вашему пожеланию, но пока не могу обещать, когда я вернусь к редактированию статьи. Для подбора нужных стилей гораздо проще воспользоваться встроенными инструментами разработчика, которыми к данному моменту снабжены все популярные браузеры (Хром, Мазила, IE и Opera). Они являются аналогами знаменитого расширения Firebug, о котором я писал здесь:

      http://goldbusinessnet.com/instrumenty-vebmastera/rasshireniya-dlya-firefox-firebug-gde-skachat-kak-ustanovit/
      Ответить
  29. legal

    Вот как мне сделать так, чтобы проверил — поле не введено, и отправил через 10 секунд посетителя обратно к форме.
    Какой код написать? А то в данном виде, вне зависимости от правильности заполнения полей идёт переадресация на следующую страницу, как будто бы все поля правильно заполнены.
    Пример текущего кода:

     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
      <meta http-equiv="refresh" content="10; url=http://www.1.ru/letsgo.php/"> 
      <title>Feedbackform</title>  
    </head>
    <body>
    <div align="center">
    <table border="0" cellspacing="0" cellpadding="20" width="650">
    <tr>
    <td align="center">
    <p style="color: blue; font-size: 20px;">
       <?php
       /* Здесь проверяется существование переменных */
       if (isset($_POST['name1'])) {$name1 = $_POST['name1'];}
       if (isset($_POST['name2'])) {$name2 = $_POST['name2'];}
       if (isset($_POST['name3'])) {$name3 = $_POST['name3'];}
       if (isset($_POST['email'])) {$email = $_POST['email'];}
       if (isset($_POST['tel'])) {$tel = $_POST['tel'];}
       if (isset($_POST['pravo'])) {$pravo = $_POST['pravo'];}
       if (isset($_POST['body'])) {$body = $_POST['body'];}
    
    /* А эта функция занимается обработкой введённых данных в форме перед отправкой письма на указанный вами email */
       if (empty($name1))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана фамилия!</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxxx.ru/partners/200x300.gif' alt='XXX' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       } 
          if (empty($name2))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано имя!</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       }
          if (empty($name3))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано отчество!</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       }
           if (empty($email))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан e-mail!</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       }
          if (empty($tel))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан телефон!</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       }
          if (empty($pravo))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана тема вопроса!</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       }
          if (empty($body))
       {
       echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Вы забыли написать комментарий?</b></span></p>";
       echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>";
       echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       exit;
       }
    /* Сюда впишите свою эл. почту */
       $address = "questions@www.1.ru";
    /* А здесь прописывается текст сообщения, \n - перенос строки */
       $mes = "Фамилия:  $name1 \nИмя:  $name2 \nОтчество:  $name3 \nE-mail: $email \nТелефон для связи: $tel \nВопрос о: $pravo \nКомментарий: $body";
     /* А эта функция как раз занимается отправкой письма на указанный вами email */
       $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
       
    /* А эта функция занимается выводом сообщения на экран после верного заполнения формы обратной связи и ошибки отправки сообщения */
    
       if ($send == 'true')
       {
       echo $a = "<a href='http://www.1.ru/letsgo'><img src='http://xxx.ru/feedbackmess/image/xxx(500x221).png' border=0 title='Перейти'></a><br>\n<br>\nВаша заявка принята.<br>\nСообщение успешно отправлено.<br><br>\nВы будете перенаправлены на форму оплаты в течении 10 секунд.<br>\n<br>\nЕсли не хотите ждать, а хотите перейти к оплате сразу,<br>\n <a href='http://www.1.ru/letsgo>нажмите на эту ссылку</a>.<br>\n <img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'>";
       }
       else 
       {
    echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости что-то и где-то пошло не совсем так как надо.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>";
       }
       ?>
       </p>
    </td>
    </tr>
    </table>
    </div>
    </body>
    </html> 

    Я так понимаю, что данный код необходимо удалить и вместо него что-то прописать иное для переадресации через 10 секунд на нужную страницу . Вот как это сделать не знаю. 🙁

    Ответить
    1. Игорь Горнов автор

      Legal, судя по всему, форма не имеет изъянов. В случае некорректного заполнения полей должно идти перенаправление на страницу с формой, а в случае правильного заполнения — на основную страницу, причем в обоих случаях — через 10 секунд. Даже не знаю, почему форма не работает как надо. Возможно, дело в настройках сервера, иногда так бывает.

      Ответить
  30. Руслан

    Игорь, здравствуйте. Пытаюсь воспользоваться вашим кодом, но столкнулся с похожей проблемой как у Руслана выше, только у меня не установлено никаких сторонних сервисов. Текст скопировал точно, файл в нужно кодировке, где надо адрес заменил, но все равно пишет — Ошибка, сообщение не отправлено! Если не все поля заполнить, то выводит — Вы заполнили не все поля, необходимо вернуться назад! Подскажите, пожалуйста, куда копать.

    Ответить
    1. Игорь Горнов автор

      Здравствуйте, Руслан. Почитайте комментарии выше, в них есть ответы на Ваш вопрос. Особенно уделите внимание сообщениям автора под ником Велимудр. В любом случае, данная форма не панацея, может работать некорректно для некоторых сайтов. В том случае, если не удастся найти решение проблемы, попробуйте воспользоваться плагином.

      Ответить
  31. Велимудр

    Доброе утро Игорь.
    Мне нужна твоя помощь по wordpress-y.
    В контакте напишу.

    Ответить
    1. Игорь Горнов автор

      Хорошо, Тимур.

      Ответить
  32. Велимудр

    Доброй ночи Игорёк.
    Вновь я в этой теме 🙂
    Не хочешь ли ты дополнить эту форму небольшой правкой на javascript ?
    К примеру написать перехватчик отправки и фоново отправлять данные? можно ведь универсальной сделать её, в action оставить ссылку на файл, по идентификатору же вызывать события до отправки, то есть перехватывать нажатие, проверять на правильность, и так далее. У кого выключен JS, у тех форма сработает на чистом php, у кого включен — ajax-сом отправится.
    Думаю такое дополнение будет только в пользу.

    Ответить
    1. Игорь Горнов автор

      Да, Тимур, твои дополнения всегда содержательные и в тему. Дело в том, что я потихоньку обновляю материалы, но, как понимаешь, просто физически невозможно сделать это мгновенно. Но твои поправки обязательно приму к сведению.

      Ответить
  33. Юлия

    Здравствуйте, Игорь. Очень хорошая форма. Установила — всё работает. Но возникла небольшая проблема. Мне нужны дополнительные поля «Телефон» и «Адрес», попробовала добавить телефон, но форма слетела(сдвинулись поля). Как их сделать в столбик, как у вас?
    вот часть кода в mail.php
    if (isset($_POST[‘name’])) {$name = $_POST[‘name’]; if ($name == ») {unset($name);}}
    if (isset($_POST[’email’])) {$email = $_POST[’email’]; if ($email == ») {unset($email);}}
    if (isset($_POST[‘phone’])) {$phone = $_POST[‘phone’]; if ($phone == ») {unset($phone);}}
    if (isset($_POST[‘sub’])) {$sub = $_POST[‘sub’]; if ($sub == ») {unset($sub);}}
    if (isset($_POST[‘body’])) {$body = $_POST[‘body’]; if ($body == ») {unset($body);}}

    if (isset($name) && isset($email) && isset($phone) && isset($sub) && isset($body)){

    $address = «remmebel64@mail.ru»;
    $mes = «Имя: $name \nE-mail: $email \nТелефон: $phone \nТема: $sub \nТекст: $body»;

    а вот код на странице:
    Ваше имя Электронная почта Ваш телефон Тема сообщения Текст сообщения:

    Ответить
    1. Игорь Горнов автор

      Юлия, честно говоря, навскидку не определить проблему, не зная вводных. Если у Вас ресурс в сети, то пришлите ссылку на страницу с проблемной формой.

      Ответить
    2. Велимудр

      Юлия, вы пробовали после каждого добавляемого поля поставить тег переноса? =)

      Но если вы копировали, input-ы должны быть обёрнуты тегами
      Быть может бы промахнулись… не дописали тег… или переписали =)) в смысле больше, чем надо.
      Сами по себе они не могут так себя вести, проверьте стили все, все теги, стили блока, в котором форма, стили соседних тегов…. чаще проблема возникает там, где её не ждёшь.
      Напишите как они сдвинулись.

      Ответить
    3. Игорь Горнов автор

      Юлия, отправил инструкции на Ваш e-mail.

      Ответить
  34. Станислав

    Подскажите, у меня при отправке сообщения по обратной связи приходят иероглифы во всех полях, где по русски написано… не могу никак разобраться.. помогите, пожалуйста… это код из формы обратной связи… я полный чайник… попробовал все что вы писали, но так и не смог найти суть… куда именно нужно добавить строку и какую?

    Ответить
    1. Игорь Горнов автор

      Станислав, иероглифы появляются при нарушении кодировки. Сделайте вот что. Когда создаете файл mail.php (такое название у меня в статье, Вы можете назвать его по-другому), после вставки кода сохраните его в UTF8 (без BOM). Если это действие положительного результата не принесет, попробуйте сохранить его просто в UTF8. Для этих целей используйте редактор с синтаксисом (рекомендую notepad++), ссылка на материал об этой программе дана в статье. Все должно получиться, я уверен.

      Ответить
      1. Станислав

        Игорь, у меня файл и так в формате utf-8 без ВОМ… перекодировка самого файла не помогает… все что было в комментариях выше рекомендовано пробовал — ничего не помогло…. не знаю уже,где копать…

        Ответить
        1. Игорь Горнов автор

          Станислав, а у Вас сайт уже на хостинге или еще на Денвере? В этом может быть причина.

          Ответить
  35. STRIKE

    C добрым утром!
    Извините что беспокою, у меня такая проблема что уже больше не хочеться создавать сайты из-за этой чёртовой проблемы неделя как уже сижу за компом. Все плагины и другие формы обратной связи поставил нет толка, сперва отправился потом затух. После всех работ наткнулся на Ваш сайт и установил эту форму. Так форма классная выводиться на сайт но после заполнения и отправки сообщения у меня вот такая ошибка:
    Warning: mail(/home/u560520352/.logs/php_mail.log) [function.mail]: failed to open stream: No such file or directory in /home/u560520352/public_html/wp-content/themes/parasponsive/mail.php on line 12
    И потом сообщения вообще не отправляется хотя почта рабочая.
    Очень прошу Вас помочь по этой ошибке пожалуйста!
    Спасибо!

    Ответить
    1. Игорь Горнов автор

      Strike, еще раз проверьте все внимательно. Дело в том, что данное сообщение информирует об отсутствии файла. Посмотрите, куда Вы поместили mail.php. Проконтролируйте, прописан ли в коде, который нужно разместить в mail.php, на 10 строке именно Ваш адрес электронной почты. По идее, форма универсальная и должна работать на всех темах Вордпресс. Конечно, могут быть исключения, не без этого. В общем, проверьте все досконально и внимательно еще раз.

      Ответить
  36. Marishka0801

    здравствуйте! подскажите пожалуйста, хочу добавить новые поля в форму. например поле Номер телефона Номер телефона подскажите, куда еще надо добавить переменную $name кроме мест, обозначенных стрелочками http://pix.am/L25U/ . при отправке письма выдает ошибку, что не все поля заполнены. подозреваю, что проблема в 12 строчке. жду ответа, заранее спасибо!

    Ответить
    1. Игорь Горнов автор

      Решение отправил Вам на e-mail, поскольку сообщение получилось довольно объемным.

      Ответить
      1. Marishka0801

        да, получила. спасибо!

        Ответить
  37. Mega

    У меня форма отправляла сообщения в виде «????», тогда я поменял кодировку в коде:

     $send = mail ($address,$sub,$mes,&quot;Content-type:text/plain; charset = windows-1251rnFrom:$email&quot;); 

    . Строку

    &lt;meta charset=&quot;UTF-8&quot; /&gt;

    вообще удалил.

    Ответить
  38. FENIX

    Добрый день) Недавно начал работать с движком поэтому сразу прошу прошение за глупые вопросы.
    Хотел сделать обратную связь как в статье но не понял как вывести его в отдельную страницу http://yadi.sk/d/DRE6LHpmMRujn (скрин)
    И подскажите как на данной странице отключить обсуждение.
    Заранее спасибо

    Ответить
    1. Игорь Горнов автор

      Fenix, мне казалось, я все подробно описал.

      Ответить
      1. FENIX

        сори) невнимательность)
        После отправки письма пишет (Ошибка, сообщение не отправлено!) Где подскажите капать?

        Ответить
        1. Игорь Горнов автор

          Fenix, попробуйте ознакомиться с выше стоящими комментариями, там можете найти решение проблемы. Особое внимание уделите сообщениям читателя под ником Велимудр, они обстоятельны и по делу.

          Ответить
  39. Илья

    Скажите пожалуйста, таким же доступным языком, а как вывести такую форму при клике на ссылку,но в модальном окне?

    Ответить
  40. Руслан

    Добрый день, Игорь
    Подскажите форму поставил все по инструкции, вижу в редакторе mail.php
    Сохранено в UTF 8 без BOM, но когда отправляю с сайта на свою почту пишет
    Ошибка, сообщение не отправлено!
    Менял почты и на mail.ru и gmail.com, у Контакт форм (плагина тоже самое)
    кстати делал 5 сайтов на wordpress не смог не на одном реализовать эту форму обратной связи, Пользуюсь сторонним сервисом обратной связи но хотелось бы иметь свою. Что вы можете посоветовать ?

    Ответить
    1. Игорь Горнов автор

      Руслан, а если попробовать какой-нибудь альтернативный плагин? Например, Fast Secure Contact Form. Правда, я его не тестировал, но вроде бы он регулярно обновляется, последний раз не далее как в декабре 13 года.

      Ответить
    2. Велимудр

      Доброе утро/день.
      Вы решите вопрос в чём проблема:
      1 — ваша форма отправляет сообщения в виде не читаемых символов/иероглифов.
      2 — ваша форма НЕ отправляет сообщения.
      В первом варианте проблему решать надо через файл .htaccess:
      в файле (если есть, если нет, создать файл НЕ имеющий имени — только точка-расширение), вписать строку:

      AddDefaultCharset UTF-8

      Для других кодировок соответственную указать.
      Во-втором варианте кодировка никакого отношения не имеет.
      В вашем случае связи между кодировкой и ошибкой нет.
      Решается она просто — у вас проблема в ИМЕНАХ, указанных в качестве якорей в полях формы для скрипта-обработчика, он принимает данные не все, либо принимает не полные, либо не все соответствуют у проверки обязательных/существующих к переменным при отправке либо переменные не соответствуют созданные существующим….. либо отсутствует какая либо переменная — возможно она лишняя.
      ПРОВЕРЯЙТЕ ТОЖДЕСТВЕННОСТЬ имён написанных в HTML форме в атрибутах name=»», именам, получаемым методом пост в файле обработчике и их соответствующим переменным.
      Признаюсь Я эту ошибку у себя несколько минут правил.
      Скиньте исходный код вашей формы и код обработчика.
      Если вы ничего не меняли вообще, ошибка может быть только в указании путей иначе обращайтесь к выше написанному пояснению.

      Ответить
      1. Игорь Горнов автор

        Спасибо, Тимур за участие, ты как чувствуешь, что у меня запарка.

        Ответить
      2. Руслан

        спасибо. Надо попробовать.

        Ответить
  41. Михаил

    Игорь, спасибо огромное за статью.
    Начал делать блог, с возникающими вопросами разбираюсь по ходу дела, хотя до этого про html и css ничего не знал. Но по мере необходимости гугл в помощь и вперед )))
    Ваша форма обратной связи — то что надо! чтобы не перегружать движок лишними плагинами, плюс мануал более чем понятный.
    все установил, все кастомизировал, все работает без проблем .
    В общем еще раз спасибо!

    Ответить
    1. Игорь Горнов автор

      Пожалуйста, Михаил. 🙂

      Ответить
  42. Саша

    Здравствуйте! Спасибо за статью. Вот у меня вопрос. А как убрать поле «Тема»? Заранее спасибо.

    Ответить
  43. Велимудр

    Доброе утро друг.
    Немного дёгтя, как говорят, в бочку мёда…
    Форма вообще не работает, кодировка ни windows-1251 ни utf-8 не дают нормальный текст, складывается впечатление, будто очередной релиз ДЕНВЕР-а ещё хуже сделан чем все пред идущие версии.
    Связку делать из всего набора самому нет желания, уж слишком тяжёлая эта работа.
    Года два-три назад всё на том же денвере работало отлично. У меня статический IP, и настройку денвера на глобальную сеть с использованием базы данных я настраивал (прописывал, корректировал строки конфигов) «вслепую».
    Тут уж ничего не поделать, если денвер ВНАТУРЕ дебилом стал (я читал его новый разработчик начал разрабатывать), тогда вообще лучше забыть о нём и либо связку, либо ставить типа Nginx.
    Если же кто то знает такую проблему из читавших, и знает решение, пусть напишет )

    Ответить
    1. Игорь Горнов автор

      Честно говоря, я никогда не использовал Денвер, а сразу стал работать вживую. Теперь даже не знаю, что своим читателям посоветовать в этом плане.

      Ответить
      1. Велимудр

        прям таки не знаешь?))
        Подумай )) отличная тема для новой и очень полезной статьи-продолжения.
        Поищи что-то по смыслу «форма обратной связи на Денвер», да попробуй сам разобраться, надо копать в конфиге (расширение .conf), или файл php.ini
        Знаешь как удобно на своей машине работать, ОСОБЕННО превосходно, если ip статический, можно создав каталог с именем ip адреса и с подкаталогом WWW засвечивать в интернете сайты и демонстрировать заказчикам работы.

        Ответить
        1. Игорь Горнов автор

          Тимур, к сожалению, в сутках только 24 часа… 🙂

          Ответить
  44. Анжелика

    Спасибо за ценную информацию, как раз думала ставить на сайт форму связи с плагином. А здесь такой подарок!!!
    Все сделала по инструкции в статье, форма связи работает отлично.
    Спасибо огромное!!!

    Ответить
  45. Велимудр

    Доброй ночи Игорёк.
    Давно не посещал блог твой ))
    Благодарю за тему хорошую.
    Но у меня всё ни как у людей =)

    Ответить
    1. Игорь Горнов автор

      Ну, это потому, что ты неординарная личность, а без таких жизнь кажется нудной и однообразной. 🙂

      Ответить
      1. Велимудр

        Все мы славяне ))
        Я тут очередной модуль пытаюсь сломить )))
        меня больше всего нервирует то, как разработчики лихо разбрасывают элементы тегов по всем файлам. Я понимаю — свой код, ревность к тому, как другие будут править его код… но послушайте, если вы не хотите этого, тогда зачем вы вообще разработчиками стали? что за идиотизм? это уже НЕ стиль написания кода, это маразм, это паранойя, это мания ёлки-палки.
        Я вот собрался писать собственную цмс-ку ))
        но не хочу грязь всю ту месить, которой полно во всех известных CMS-ках.

        Ответить
  46. артем

    спасибо большое! очень понятно и просто объяснили… все отлично установилось! форма работает на ура. удачи!

    Ответить
  47. Leto

    разобралась) поспешила с вопросом) спасибо еще раз за статью!

    Ответить
  48. Leto

    Спасибо за статью! Но помогите, пожалуйста! Мне необходимо создать форму, состоящую из строки с вводом почты отправителя и само сообщение и все, т.е. без строк с именем и темой.
    Создала файл contact.php:


    а в файл, где должна находиться форма, вставила это:


    В итоге сообщения отправляются, даже если не написан емейл (но тут дело вроде как в onBlur, выше прочитала).
    Но на почту приходит полная ерунда, содержание письма «Content-type:text/plain; charset = UTF-8″ и от кого. А самого текста сообщения нет.
    Помогите пожалуйста, может я неверно сократила код пхп?
    p.s. адреса в сообщении указаны условно

    Ответить
  49. Leto

    Спасибо за статью! Но помогите, пожалуйста! Мне необходимо создать форму, состоящую из строки с вводом почты отправителя и само сообщение и все, т.е. без строк с именем и темой.
    Создала файл contact.php:

    а в файл, где должна находиться форма, вставила это:

    В итоге сообщения отправляются, даже если не написан емейл (но тут дело вроде как в onBlur, выше прочитала).
    Но на почту приходит полная ерунда, содержание письма «Content-type:text/plain; charset = UTF-8» и от кого. А самого текста сообщения нет.
    Помогите пожалуйста, может я неверно сократила код пхп?
    p.s. адреса в сообщении указаны условно

    Ответить
    1. Игорь Горнов автор

      Leto, напишите мне на e-mail то же сообщение, поскольку код не отобразился, либо повторите в комментариях, но вставьте его между

      [php]код

      [/php]

      Стопроцентной помощи не обещаю, поскольку владею данной темой на среднем уровне.

      Ответить
  50. balkhash

    Спасибо.
    Установил на свой сайт в сайдбар. При не коректном заполнении полей или после отправки сообщения выходили крякозябры. Файл был сохранён в utf-8 без бом, сменил кодировку на ANSI. Отображение стало читабельным. Зато письма приходят не совсем правильные — «имя», «тема», «текст» отображаются кракозябрами. Само сообщение читается.

    Ответить
    1. Игорь Горнов автор

      Попробуйте сохранить просто в UTF-8.

      Ответить
      1. balkhash

        Благодарю.
        Код работает хорошо.

        Ответить
  51. Оксана

    Добрый день. Подскажите мне пожалуйста. Уже которую форму обратной связи пробую поставить, но проблема в том, что вообще не могу ввести в нее данные. Думаю, это проблема с самим сайтом и его настройками. Подскажите пожалуйста, какие правки мне надо ввести. Заранее всем спасибо.

    Ответить
    1. Игорь Горнов автор

      Оксана, вполне возможно, что Ваша тема ввиду ее некорректно написанного кода не дружит с предложенным мной вариантом, тут ничего не поделаешь. А что-то конкретное подсказать очень сложно, не имея под рукой Ваших шаблонов.

      Ответить
  52. Pasagir

    Благодарю! Все с первого раза получилось!
    Очень грамотная статья!

    Ответить
  53. Елизавета

    Игорь, здравствуйте! Помогите новичку!
    Форма в установленной мной на WordPress теме не просто не работает при нажатии на кнопку «отправить», а вобще ничего не происходит! Все сделала по вашему шаблону, но все равно не срабатывает. Я сижу уже пятый день с этой проблемой, но из-за нехватки знаний не могу понять, в чем ошибка?

    Вот сама форма:

    * We really hate spam. Your email is safe with us, pinky promise.

    Вот файл обработчик:

    Сейчас все файлы на локальном сервере(Денвер). Насколько мне известно, пока все отправленные письма должны появляться в папке: Z:\tmp\!sendmail. Но все безрезультатно.
    Путь к файлу c формой такой: Z:\home\localhost\www\NYP\wp-content\themes\nyp\index.php
    Путь к файлу-обработчику такой же: Z:\home\localhost\www\NYP\wp-content\themes\nyp\mail.php

    Возможно action не правильно прописан?
    Помогите, ПОЖАЛУЙСТА!

    Ответить
  54. Елизавета

    Игорь, здравствуйте! Помогите новичку!
    Форма в установленной мной на WordPress теме не просто не работает при нажатии на кнопку «отправить», а вобще ничего не происходит! Все сделала по вашему шаблону, но все равно не срабатывает. Я сижу уже пятый день с этой проблемой, но из-за нехватки знаний не могу понять, в чем ошибка?

    Вот сама форма:

    * We really hate spam. Your email is safe with us, pinky promise.

    Вот файл обработчик:

    Сейчас все файлы на локальном сервере(Денвер). Насколько мне известно, пока все отправленные письма должны появляться в папке: Z:\tmp\!sendmail. Но все безрезультатно.
    Путь к файлу c формой такой: Z:\home\localhost\www\NYP\wp-content\themes\nyp\index.php
    Путь к файлу-обработчику такой же: Z:\home\localhost\www\NYP\wp-content\themes\nyp\mail.php

    Возможно action не правильно прописан?
    Помогите, ПОЖАЛУЙСТА!

    Ответить
    1. Игорь Горнов автор

      Елизавета, а у Вас e-mail правильно прописан? (test@test.ru)

      Ответить
  55. Иван

    Скажите, как к этой форме добавить прикрепляемый файл ( для того чтобы например отправили коммерческое предложение в ворде иле экселе)

    Ответить
    1. Игорь Горнов автор

      Иван, к сожалению данный вариант формы комментариев не предусматривает возможности прикрепления файлов. Попробуйте воспользоваться плагином Contact Form 7, по-моему он хорошо адаптирован к Вордпресс, хотя я им не пользовался.

      Ответить
  56. Женя

    Пробовал, но проблема осталась. Ладно, буду смотреть, как оно будет на реальном серваке! Я думаю из-за одного файла, сохраненного не в том формате и не связанного с системными файлами проблем не должно быть. Хотя кто его знает! буду иметь ввиду..

    Ответить
  57. Женя

    Здравствуйте! У меня такая проблема: абракадабрами сообщает что сообщение доставлено и тп., файл mail.php сохранен в utf-8 без BOM, вставляю на обычную страницу контактов, правда тестирую на локалке. В чем еще может быть проблема?

    Ответить
    1. Женя

      Странно…решил проблему сохранив в кодировке UTF-8 хотя все файлы сайта в кодировке UTF-8 без BOM…

      Ответить
      1. Игорь Горнов автор

        Да, это действительно необычно. Если проблема решена, значит, все в порядке, хотя какая-нибудь бяка вследствие этого может вылезти в другом месте. Не знаю, что и посоветовать в этом случае. Возможно, причина в локальном сервере. Может, теперь попробовать сохранить без ВОМ?

        Ответить
      2. Катерина

        Евгений, не знаю актуален ли вопрос с абракадаброй, возможно совет пригодится другим .. На своем сервере в хостинг панели в настройках сервера нужно выставить необходимую кодировку. Она вероятно сбилась.. Такое бывает.
        Автору поста, спасибо!

        Ответить
  58. Александр

    Все предыдущую проблему устранил, теперь когда нажимаю отправить, выдает следущее:

    Parse error: syntax error, unexpected T_IF in /var/www/cdstree8968/data/www/street-workout.kr.ua/wp-content/themes/ShowTime/mail.php on line 8

    Что делать?

    Ответить
    1. Игорь Горнов автор

      Александр, у Вас ошибка в синтаксисе URL: www у Вас отделена слэшем:
      www/street-workout.kr.ua/
      Правильный синтаксис URL либо такой:

      _www.street-workout.kr.ua

      Либо такой:

      street-workout.kr.ua

      Думаю, ошибка в этом. Проверьте путь до шаблона темы.

      Ответить
  59. Александр

    Все сделал как написано!
    После нажатия кнопки «Отправить» выскакивает «Ошибка 404″ !

    В адресной строке пишет след. адресс «http://street-workout.kr.ua/wp-content/themes/cloudy/mail.php»

    Хотя файл mail.php у меня лежит по след. адрессу «http://street-workout.kr.ua/wp-content/themes/ShowTime/mail.php»

    Что делать?

    Ответить
  60. Александр

    Все сделал как написано!
    После нажатия кнопки «Отправить» выскакивает «Ошибка 404» !

    В адресной строке пишет след. адресс «http://street-workout.kr.ua/wp-content/themes/cloudy/mail.php»

    Хотя файл mail.php у меня лежит по след. адрессу «http://street-workout.kr.ua/wp-content/themes/ЫрщцЕшьу/mail.php»

    Что делать?

    Ответить
  61. Олеся

    Игорь здравствуйте, хотелось бы исправлений в не доработке вашего простенького кода. Заранее спасибо.

    Ответить
    1. Игорь Горнов автор

      Вы абсолютно правы, Олеся, спасибо за напоминание. Код доработан и исправлен, можете пользоваться.

      Ответить
      1. Олеся

        Спасибо Вам огромное, сейчас проверю.

        Ответить
  62. Евгения

    Здравствуйте! Помогите пожалуйста! Текст как у вас один в один, но все равно если я хоть какое то поле оставила не заполненным или вообще никакое не заполняла, пишет что сообщение отправлено и на почту мне приходит письмо с пустыми полями!

    Ответить
    1. Игорь Горнов автор

      Да, Евгения, здесь есть в коде недоработка, в ближайшее время исправлю.

      Ответить
  63. Олеся

    Хороший блог у Вас, смотрю и наслаждаюсь.

    Ответить
  64. Рита

    То что искала! Спасибо!

    Ответить
  65. Дмитрий

    Доброго дня

    На базе Вашего шаблона сделал себе форму. Подскажите пожалуйста как сделать вызов url или вернуться автом атом обратно через несклько секунд после отображения сообщения?

    Ответить
    1. Игорь Горнов автор

      Дмитрий, Вы имеете ввиду, автоматический возврат на ресурс после отправки сообщения?

      Ответить
      1. Дмитрий

        В принципе уже все решил — на других форумах поискал — получилось хорошо

        Ответить
    2. Федор

      Извините, забыл тег вставить.
      1.

      Ответить
    3. Федор

      В ваш файл имя.php вставьте такой код:
      1.

      &lt;meta http-equiv='refresh' content='3; url=Адрес нужной страницы'&gt;
      &lt;meta charset=&quot;UTF-8&quot; /&gt;
      

      2.

      if ($send == 'true')
      {echo &quot;Сообщение отправлено, через 3 секунды Вы будете направлены на главную 
      страницу, где сможете продолжить чтение &lt;a href='Адрес нужной страницы' 
      rel=&quot;nofollow&quot;&gt;Блога ******&lt;/a&gt;&quot;;}

      Этот код позволяет вернуться после отправки сообщения на нужную Вам страницу.

      Ответить
  66. Катерина

    Да, в админке прописала новый адрес. Сообщения с помощью формы отправляются прекрасно, но почему то приходят они на старый почтовик, а не тот, что прописан в админке. Вот в чем дело..

    Ответить
    1. Игорь Горнов автор

      Катерина, а у Вас последняя версия WordPress? Если он не обновлен, дело, возможно, в этом.

      Ответить
  67. Катерина

    Спасибо, за подсказку. Все устранила. Форма работает. Решила сделать для сайта новый почтовик на гугле. Сделала. В админке сайта изменила старый адрес на новый. Но сообщения все равно идут на старый ящик. На новый нет. Что такое, не пойму?

    Ответить
    1. Игорь Горнов автор

      Катерина, Вы прописали новый адрес электронной почты в админке Вордпресс в разделе «Параметры»→«Общие»? Далее, немного не понял. Вы говорите, что сообщения идут на старый адрес. Это при использовании формы обратной связи? Но у Вас же блокировался старый e-mail. С другой стороны, утверждаете, что форма работает. Поясните, пожалуйста.

      Ответить
  68. Катерина

    Пост очень толковый, спасибо. Но возникла маленькая проблемка, буду благодарна за помощь. Форма прекрасно установилась, но при попытке отправить сообщение — выдает вот что
    Warning: mail() has been disabled for security reasons… и дальше идет ссылка на mail.php
    Что посоветуете?

    Ответить
    1. Игорь Горнов автор

      Катерина, это предупреждение о том, что данный e-mail блокируется из соображений безопасности. Видимо, Вы используете какой-то нетрадиционный почтовый сервер. Попробуйте ввести адрес другого почтового ящика (желательно gmail, если у Вас нет, то зарегистрируйтесь и будете иметь доступ ко всем сервисам Google, это очень выгодно).

      Ответить
  69. Вячеслав

    Давайте я код лучше выложу )

    вот сам скрипт отправки

    <?php
    if (isset($_POST['body'])) {$body = $_POST['body'];}
    if (isset($_POST['city'])) {$city = $_POST['city'];}
    if (isset($_POST['newpost'])) {$newpost = $_POST['newpost'];}
    if (isset($_POST['from'])) {$from = $_POST['from'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['model'])) {$model = $_POST['model'];}
    if (isset($_POST['qo'])) {$qo = $_POST['qo'];}
    if (isset($_POST['comm'])) {$comm = $_POST['comm'];}
     
    $address = "order@2d5d.com.ua";
    
    $mes = "Имя: $body \nГород: $city \nНовая почта: $newpost \nТел: $phone \nE-mail: $from \nМодель: $model; \nКоличество: $qo \nТекст: $comm";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$from");
    if ($send == 'true')
    {
    echo "Заказ принят !";
    }
    else
    {
    echo "Сообщение не отправлено, проверьте правильность заполнения полей и попробуйте снова";
    }
    ?>
    Ответить
    1. Игорь Горнов автор

      Вячеслав, этот код несколько сложнее, чем тот, что дан в статье. Видите ли, я не гуру языка php, хотя некоторые простые вещи могу объяснить. Вот например, я вижу, что у вас указана кодировка windows-1251 в строке:

      $send = mail ($address,$sub,$mes,»Content-type:text/plain; charset = windows-1251\r\nFrom:$from»);

      попробуйте заменить ее на UTF-8 и в блокноте notepad++ сохранить весь документ в кодировке UTF-8 без BOM. Хотя дело навряд ли в этом, но попробуйте…

      Ответить
  70. Вячеслав

    о и забыл, что дописать чтобы после того как высветилось что письмо отправилось, вернулось обратно на сайт

    Ответить
    1. Игорь Горнов автор

      Вячеслав, немного не понял. Вы проверяли работоспособность формы, отправляя сообщение со своего сайта к себе же на e-mail? Даже в этом случае все должно работать, если Вы правильно скопировали код. А Вы заполняли графы Тема и Имя?

      Ответить
      1. Вячеслав

        Да, проверял, я добавил еще несколько полей нужных мне и все, письмо приходит без темы письма, но все содержимое формы доходит

        Ответить
        1. Игорь Горнов автор

          Вячеслав, а каким образом Вы добавили поля? Может дело в этом?

          Ответить
  71. Вячеслав

    Здравствуйте все сделал все работает, но письмо приходит без заголовка , просто пустота в списке псием…
    Подскажите что куда вставить чтобі в теме письма отображались имя и тема например ?

    Ответить
  72. Zack

    Проверил. Тестовое сообщение не приходило.

    Ответить
    1. Игорь Горнов автор

      Значит, форма работает корректно. Хорошо, осталось выяснить, почему отображается извещение, что сообщение отправлено.

      Ответить
      1. Zack

        Да. Сам принцип правильный и при верном вводе всё идет нормально. А вот почему при ошибочном выдается некорректное сообщение — это вопрос 🙂
        Проверял синтаксис, вроде бы всё без ошибок.

        Ответить
  73. Zack

    Игорь, Вы получили страницу через Контакты?)

    Ответить
    1. Игорь Горнов автор

      Да, Zack, простите за задержку. Только сейчас немного освободился. Редко такое бывает, когда все сваливается в одну кучу, в том числе целая кипа писем, которая пришла. Прямо сейчас начинаю заниматься Вашей проблемой.

      Ответить
    2. Игорь Горнов автор

      Zack, что-то я не обнаружил в Вашей форме обратной связи такой проблемы, которую Вы описывали. Отправил тестовое сообщение и не указал e-mail. Получил адекватную реакцию в виде предупреждения, что необходимо заполнить все поля.

      Ответить
    3. Игорь Горнов автор

      Простите, Zack, по моему, я заработался, проверил другую Вашу форму. А по поводу той, о которой Вы писали, действительно, глючит. А скажите мне, пожалуйста, дошло ли действительно мое тестовое сообщение. Если дошло, то что указано там, где должен быть e-mail отправителя, то есть в начале сообщения?

      Ответить
  74. Zack

    Перепроверил. Скопировано верно.
    Просто там получается, что если из одного поля убрать данные, то при нажатии на отправку, надпись возвращается и система всегда пишет, что отправлено.
    Т.е. фактически автоматом в пустую ячейку вставляется стандартный текст.

    Ответить
    1. Игорь Горнов автор

      Zack, весьма странно, что у Вас возникли такие сложности. Если код скопирован верно, никаких проблем быть не должно. А у Вас случайно не установлен похожий плагин? Может, Вы забыли его деактивировать? Если нет, то попробуем разобраться. Пришлите мне через страницу Контакты ссылку на Вашу страницу с формой.

      Ответить
      1. Zack

        Отправил 🙂

        Ответить
      2. Федор

        Игорь, проблема в том, что если в какое-либо из полей пользователь ничего своего не ввел, а перешел к следующему полю, то в первое поле возвращается значение установленное поумолчанию благодаря вот этому коду: onblur="if(this.value=='')this.value=this.defaultValue;".
        В результате все поля получаются заполненными и сообщение отправляется.
        Я немного поэксперементировал и этот код убрал. Теперь поле остается пустым и выдается сообщение об ошибке заполнения формы.

        За код и форму большое спасибо!

        Ответить
        1. Игорь Горнов автор

          Федор, огромное спасибо за конструктивное дополнение, думаю читателям будет интересно. Однако, у меня к Вам большая просьба. Не могли ли Вы повторить предыдущее сообщение, адресованное Дмитрию, по идиотской случайности я его удалил без возможности восстановления. Заранее благодарю.

          Ответить
          1. Федор

            Код я повторил, но тег code срабатывает некорректно и съедает его. Попробую продублировать через форму обратной связи.

  75. Zack

    Здравствуйте!

    Установил форму, все работает. Только один нюанс: при правильном вводе данных в форму идет правильная обработка, а при неправильных (например, не указал e-mail) все равно пишет, что сообщение отправлено, хотя на самом деле ничего не отправляется.
    В чем может быть проблема?

    Ответить
    1. Игорь Горнов автор

      Zack, возможно, Вы неправильно скопировали код, проверьте.

      Ответить
  76. Валерий

    У меня неработает Ваша форма обратной связи. Ошибка 404 не найдена…Все сделал как напмсано, слово в слово.

    Ответить
    1. Игорь Горнов автор

      Значит, не все, раз не работает. Проверьте внимательно, правильно ли Вы скопировали коды.

      Ответить
    2. Валерий

      Согласен с теской, выдает ошибку 404, а сейчас и 502. Может тема нестандарт

      Ответить
      1. Игорь Горнов автор

        Валерий, все может быть. Однако ошибка 404 означает, что страницы с таким URL не существует. Значит, Вы ее либо не опубликовали, либо удалили, третьего не дано. И содержание страницы (в данном случае форма комментариев) здесь совершенно не при чем.

        Ответить
        1. Федор

          … Либо путь неправильно прописан!

          Ответить
      2. Валерий

        Все скопировано и прописано правильно, единственная думаю проблема что сам сайт в дополнительной папке, хотя прописывал и полный путь не помогло

        Ответить
    3. Spider Agent

      Надо обновить правила реврайта, товарищи! Либо flush_rewrite_rules(); на один раз подставить, либо тупо зайти в админку и сменить ЧПУ, потом вернуть обратно.

      Ответить
  77. Nurlan

    Уважаемый Игорь, спасибо за статью. Поставил форму, но при получении на свой емайл письма в первой половинке адреса получателя, т.е. моего перед «собачкой» (@) непонятная абра-кадабра.

    Ответить
    1. Игорь Горнов автор

      Уважаемый Nurlan! Обычно абракадабра появляется при нарушении кодировки. Попробуйте еще раз скопировать код файла шаблона, который с расширением .php и сохраните его в кодировке UTF-8 (без ВОМ). Обязательно без ВОМ!

      Ответить
  78. David

    Спасибо, давно искал простую и не замороченную в установке форму обратной связи без плагина.
    Но у меня не получается настроить что-то. Всё сделал, как Вы подробно написали. Но при отправке сообщения через форму, возникает кусок кода mail.php

    Пожалуйста, перейдите по этой ссылке http://english-da.ru/kontakty и попробуйте отправить сообщение через форму, может Вы сможете понять, где я сделал ошибку.

    Заранее благодарю 🙂

    Ответить
    1. Игорь Горнов автор

      Давид, отправил сообщение через форму обратной связи. Попробую решить Вашу проблему, но это займет определенное время.

      Ответить
    2. Игорь Горнов автор

      Давид, бог ты мой! Тысяча извинений. Ошибка не Ваша, а моя. Небольшой, но решающий косяк я обнаружил в коде. Видимо, это результат редактирования статей, которое я осуществил недавно. Сейчас все исправил, поэтому сделайте вот что. Откройте созданный для формы обратной связи файл (я не знаю, как он у Вас называется, тот, который у меня mail.php), скопируйте снова первый код в статье и вставьте вместо старого, все должно заработать корректно. Еще раз извините.

      Ответить
      1. David

        Спасибо большое за помощь.
        Всё теперь работает корректно. Спасибо ещё раз. 🙂

        Ответить
        1. Игорь Горнов автор

          Не за что, Давид, тем более это моя недоработка. 🙂

          Ответить