Здравствуйте! Сегодня будем делать форму обратной связи без использования плагинов, для сайта на WordPress.
Я стараюсь не пользоваться этими редисками плагинами, которые нагружают сайт, когда можно легко заменить их несколькими строками кода.
Непосредственными плюсами в предложенном методе является то, что код абсолютно валидный и данную форму вы можете вывести в любой части сайта.
Валидный код — это код страницы сайта, который соответствует неким правилам и требованиям.
К плюсам можно отнести и легкость в создании данной формы, что ж давайте начнем.
Создание формы обратной связи
Для начала нужно создать файл, который будет отвечать за отправку сообщений на указанный вами электронный адрес. Рассмотрим, в качестве примера форму обратной связи без плагинов, которую я использую на данном блоге. С ней вы можете ознакомиться здесь.
Выглядит она следующим образом:
Создайте файл с названием mail.php (Можете создать обычный текстовый документ и переименовать его, не забудьте вместо .txt указать формат .php) и поместите его в папку с вашей темой (Ваш.сайт/wp-content/themes/ваша тема/mail.php). Теперь можно открыть этот файл в админке блога во вкладке Внешний вид/Редактор или же используйте html редактор Notepad++ и вставьте в него следующий код:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv='refresh' content='3; url=https://uznipc.com/'></meta> <?php if (isset($_POST['name'])) {$name = $_POST['name'];} if (isset($_POST['email'])) {$email = $_POST['email'];} if (isset($_POST['sub'])) {$sub = $_POST['sub'];} if (isset($_POST['body'])) {$body = $_POST['body'];} $address = "seregadadk@mail.ru"; $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 "Сообщение отправлено, через 3 секунды вы вернетесь на главную страницу."; } else { echo "Сообщение не отправлено, проверьте правильность заполнения полей."; } ?>
Давайте разберем код. Строка под номером 2 отвечает за переадресацию на указанную вами страницу через 3 секунды. Время вы можете изменить, заменив число в «content=’3;» на свое.
В 9 строке укажите ваш E-mail адрес, на который будут приходить письма.
Строки 14 и 18 измените на свое усмотрение или оставьте как есть.
На этом закончим с настройками файла mail.php и перейдем к вставке его на блог.
Вставка формы обратной связи
Остался совсем пустяк, выбрать страницу, на которой будет отображаться наша форма обратной связи. Обычно для этого делают отдельную страницу, на которой собственно и выводят данную форму.
Для ее вывода используем следующий код:
<form name="MyForm" action="/wp-content/themes/Ваша Тема/mail.php" method="post"> <p><input class="input" name="name" type="text" style="width:32%" value=" Ваше имя *" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /></p> <p><input class="input" name="email" type="text" style="width:31%" value=" Ваш E-mail адрес *" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /></p> <p><input class="input" name="sub" type="text" style="width:32%" value=" Тема сообщения" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" /></p> <p><textarea name="body" cols="1" rows="3" style="width:98%; height: 150px;" onfocus="if(this.value=='Текст сообщения'){this.value=''};" onblur="if(this.value==''){this.value='Текст сообщения'}" >Текст сообщения</textarea></p> <p><input value="Отправить сообщение" type="submit" /></p> </form>
Подкорректируйте в 1 строке путь к файлу mail.php. Редактируйте под себя названия, высоту, ширину, расположение полей. Для этого замените или добавьте стили в «style=»width:31%; Ваш стиль;»».
Если на почту вам приходят невразумительные иероглифы или квадраты, сохраните файл mail.php в кодировке UTF-8 без BOM с помощью редактора Notepad++.
Вот и все, простой и легкий код, с помощью которого выводится форма обратной связи без плагинов. Вы можете ее усовершенствовать, переделать под свой дизайн, назначив стили CSS, или же задать их непосредственно в коде вывода формы.
Приветствую! Прошу не обижаться, но так статьи для новичков не пишут.
Попробовал поставить ваше решение формы обратной связи. В итоге, сначала не открывалась страница, но это ладно. Но потом, начал смотреть внимательнее код, оказалось, требуется кроме адреса главной страницы (что не указано вами в статье) изменить адрес получения писем на свой, что опять же не указано в вашей статье.
Дальше интереснее, при установке и внесении нужных данных оказывается что форма не работает. Выдается, что сообщение отправлено и меня перебрасывает на главную. Но пи этом страница не отображается. Письмо приходит, но с пустыми полями от непонятного адресата.
Я вижу что у вас это форма работает, тогда где может быть ошибка. Решение интересное и если это ваш код, то требуется доработать. И еще, а как решается проблема спама? И как применить стили? Как они называются?
Можете не пропускать мой комментарий, но статью переработайте. Удачи!
Здравствуйте, Артем. Для обиды нет причины. Наверно, вы не читали полностью статью 🙂 Под кодом написано следущее:
«Давайте разберем код. Строка под номером 2 отвечает за переадресацию на указанную вами страницу через 3 секунды. Время вы можете изменить, заменив число в «content=’3;» на свое. В 9 строке укажите ваш E-mail адрес, на который будут приходить письма. Строки 14 и 18 измените на свое усмотрение или оставьте как есть.»
Возможно, просто не заметили. Выделил в этом месте E-mail жирным, чтоб видно было 🙂
Также при вставке формы на страницу нужно указать путь созданного mail.php (wp-content/themes/Ваша Тема/mail.php), что я также указал под кодом.
«Подкорректируйте в 1 строке путь к файлу mail.php. Редактируйте под себя названия, высоту, ширину, расположение полей. Для этого замените или добавьте стили в «style=»width:31%; Ваш стиль;»».»
Думаю, о стилях вопрос тоже отпал 🙂
Причина, по которой форма может не работать — хостинг не поддерживает данную функцию.
Вопрос со спамом я не решал, мне и в голову не приходило, что в обратную связь будут спамить 😈 Кстати, не 1 спам письма еще небыло.
Надеюсь, дал полный ответ 🙂
Почти полный. Спамить могут все что угодно, на то и он и спам. А вот о стилями не стыковочка. А если я хочу стили отдельно задать, например, мерцание придать полям или еще как-нибудь выпендриться. В теле кода писать не удобно, так что лучше дать идентификаторы. Или «заворачивать» каждое поле ввода в отдельный div-контейнер?
Конечно, при желании эту форму обратной связи можно усовершенствовать, назначить для нее различные стили CSS оформления, вы можете сделать это и в теле, но у меня белый фон и я не стал заморачиваться. 🙂
Сережа, этим твои советом я тоже воспользовалос. Уже проверила — все работает. Только вот страница, созданная мною для вставки формы отображается только если читать запись или в архиве. На главной её нет. Может я чего не так вставила?
Обычно для обратной связи создается отдельная страница, на которой размещается код из пункта «Вставка формы обратной связи». Вы не забыли закинуть страницу mail.php и указать путь к ней? (Также настроить пункты, которые я описывал в статье)
Уже все работает как надо. Просто на момент вставки я еще код php в темку не вставила. А сейчас все красиво. Пасибки 😉
Пожалуйста 🙂 Можете еще со стилями поэкспериментировать, разметить поля ввода как вам нравится 🙂
Все хорошо, только проверка заполнения полей работает некорректно. Если в пустой форме нажать отправить то выводится сообщение что сообщение отправлено и редирект на галвную
Да, вы правы, что-то не так. Ну и пусть отправляются, поверьте, никому и в голову не придёт отправлять незаполненную форму 🙂
Спасибо за пример! Главное, что реализация формы обратной связи делается без плагина. Все доходчиво изложено в статье как раз для тех, кто не сильно разбирается в сайтостроении. Сделал все, как описано — работает! Правда как описано выше в комментарии, есть недочет как отправление пустой формы. Думаю, глобальной проблемой это не является, по крайней мере, для меня 🙂
Пожалуйста! Думаю, когда будет больше времени разберусь с проблемой отправки пустой формы 🙂
Здравствуйте, Сергей! Спасибо Вам огромное за отличную статью. 🙂 Все получилось с первого раза.
С уважением.
Здравствуйте, Екатерина. Пожалуйста! Рад, что вам пригодилось 🙂
😮 Добавила Ваш блог в избранное, спасибо еще раз.
Люблю, когда применив на практике представленный материал, сразу получаешь результат.
Еще раз пожалуйста 🙂 Я иногда встречаю материалы, которые пишут на «отвяжись» и они не представляют никакой пользы. Не понимаю для чего их плодить 🙂 Вам также спасибо за отзывы 😈
Сказать, честно, я блоги с подобными статьями тоже не понимаю. 😈 .
Кстати, стараюсь чистить браузеры после посещения подобных блогов, тогда их в выдаче если и выдает, то очень редко.
Даже так 🙂 Ну я с чисткой не заморачиваюсь, просто вижу знакомый адрес и не захожу туда 🙂
Сергей,спасибо огромное за статью
с вчерашнего дня бился,пытаясь собрать эту «Форму обратной связи»
и ничего не получалось….
сегодня наткнулся на твою инфу,и о чудо,все заработало
Респект !!!:cool: .
Хм…а ведь не все так гладко однако
Сергей,подскажите как сделать что бы форма не разъезжалась при добавлении текста над ней
ну и ,разжуйте «чайнику» как все таки по колдовать над стилями,что бы форма приняла подобие вашей ?
Здравствуйте, Вячеслав. Форме можно задать любые стили, и расположение полей. Сейчас, на блоге используются следующие стили (стили задаются в коде формы после слова style=»:
Вы можете изменить их, подстроив под свой сайт:
Границы вокруг элемента:
border: 1px solid gray;
Отступ:
margin: 0 5px 0 0;
Закругление границ:
border-radius: 4px 4px 4px 4px;
Выравнивание по левому краю:
float: left;
Высота поля:
height: 26px;
Позиция относительно исходного места:
position: relative;
Ширина поля:
width: 185px;
Тени:
box-shadow: 0 0 4px gray;
Это стили полей ввода Имени, E-mail, Темы (для каждого отдельно). Что касательно самого поля, куда вводить сообщение, такие стили:
Границы вокруг элемента:
border: 1px solid gray;
Закругление границ:
border-radius: 6px 6px 6px 6px;
Высота поля:
height: 150px;
Ширина поля (в процентах) :
width: 97.3%;
Тени:
box-shadow: 0 0 4px gray;
Сергей,спс
буду разбираться.
Пожалуйста 🙂
Сергей,никак не разберусь с последней (нижней колонкой)
не получается применить стили.в пунктах
8
9
10
не мог бы ты выложить этот конец кода ?
Вот эта часть у меня:
Сделала по Вашему описанию, всё работает! СПАСИБО!
Пожалуйста! 😉 🙂
При нажатии на отправить выдает
Not Found
The requested URL /mail.php was not found on this server.
Прочтите внимательно раздел в данной статье — «Создание формы обратной связи», там описано:
Создайте файл с названием mail.php (Можете создать обычный текстовый документ и переименовать его, не забудьте вместо .txt указать формат .php) и поместите его в папку с вашей темой (Ваш.сайт/wp-content/themes/ваша тема/mail.php).
Также вставьте код в mail.php, который указан под данными словами в статье.
Нам сайт делали и такой папки нет. Можно как то по другому сделать?
Разместите файл mail.php в любом удобном для вас месте, в разделе «Вставка формы обратной связи» измените путь к файлу mail.php на свой (1 строка)
1
Здравствуйте, спасибо все получилось.
Не против, если я перепечатаю статью у себя в блоге со ссылкой на оригинал статьи?
Пожалуйста 🙂 Вы уже это сделали, спасибо, что предупредили и поставили ссылку 🙂
у меня круче 😈
———————-
«Ссылку я перенес в урл»
Сергей, если подписываюсь на новость и слежу за комментариями, от вас ссылки приходят криво на почту «в текстовом варианте, т.е ссылки не кликабельны и приходится копировать и вставлять в строку браузера что не удобно», уделите этому минуту внимания )) Смотрите скриншот