Это очередная статья о том, как сделать ваш сайт на базе WordPress чуть лучше, информативнее и привлекательнее. И сегодня вы узнаете как организовать на сайте WordPress обратную связь без помощи плагинов.
Форма обратной связи — это один из важнейших элементов на сайте, очередной шаг навстречу посетителю. А посетители — это самое важное для любого сайта. Поэтому, и я считаю, вы со мной согласитесь, страница с формой обратной связи обязательна к установки на каждый сайт!
И в этой статье я подробно остановлюсь на том, как же добавить форму обратной связи на сайт WordPress.
Перед тем, как приступить непосредственно к созданию формы, нужно поставить цели, определиться что будет включать в себя форма, какие поля необходимы.
Форма должна быть наглядной и понятной.
Обычно, достаточно бывает следующего набора полей:
- Имя
- Адрес электронной почту (e-mail)
- Тема сообщения
- Текст сообщения
В примере ниже я еще добавил простенькую защиту от спама (ответ на контрольный вопрос).
Задачи поставлены, приоритеты расставлены, поля для формы определены. Можно приступать непосредственно к созданию.
Создаем форму обратной связи для сайта на базе WordPress
- Создаем новый файл
contact.php
- Открываем его в своем любимом текстовом редакторе и копируем в него следующий код
\n\n" . __('Messege', 'theme_textdomain') . ":\n$messege\n\n--\n" . __('This mail is sent via contact form on ', 'theme_textdomain') . get_bloginfo('name') . "\n" . get_bloginfo('url'); $headers[] = "From: $name"; $headers[] = "Reply-To: $email"; /* $headers[] = "To: $emailTo"; */ wp_mail($emailTo, $subject, $body, $headers); $emailSent = true; unset($_POST['contactName'], $_POST['email'], $_POST['subject'], $_POST['messege'], $_POST['control']); } } ?>
Сохраняем файл contact.php и загружаем его в папку с файлами вашей темы
Открываем для редактирования файл functions.php и добавляем в него следующий код/* Shortcode contact */ function contact_shortcode($content = null) { return get_template_part('contact'); } add_shortcode('contact', 'contact_shortcode');Сохраняем документ
Все готово к работе.
Как добавить форму обратной связи на страницу WordPress
- Создаем новую страницу
- Вводим название страницы — например, «Обратная связь»
- В поле содержимого вставляем короткий код
[
contact
]
- Опубликовываем страницу
- Пользуемся
Комментарии и обратные ссылки лучше отключить на данной странице.
Как русифицировать форму обратной связи WordPress
По-умолчанию все сообщения и подписи в форме будут отображаться на английском языке.
Но в код добавлена возможность для перевода всех сообщений и подписей. Для этого нужно заменить все вхожденияtheme_textdomain
на значение для вашей темы, и добавить перевод требуемых строк в файл локализации. К сожалению описание про работе с файлами локализации выходит за рамки данной статьи, но если у вас появятся вопросы, задавайте.Можно дополнительно оформить форму обратной связи с помощью стилей CSS. В этом вам может пригодиться статья Форма обратной связи средствами CSS
А для новичков и самых любознательных объясню в двух словах что делает вышеприведенный код.
Первая часть кода проверяет форму на наличие незаполненных полей и на наличие ошибок в заполненных полях. При их отсутвии введенное сообщение отправляется посредством e-mail администратору сайта.
if (isset($_POST['submitted'])) { if (trim($_POST['contactName']) === '') { $nameError = __('Please enter your name', 'theme_textdomain'); $hasError = true; } else { $name = trim($_POST['contactName']); } if (trim($_POST['email']) === '') { $emailError = __('Please enter your email address', 'theme_textdomain'); $hasError = true; } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", trim($_POST['email']))) { $emailError = __('You entered an invalid email address', 'theme_textdomain'); $hasError = true; } else { $email = trim($_POST['email']); } if (trim($_POST['messege']) === '') { $commentError = __('Please enter a message', 'theme_textdomain'); $hasError = true; } else { $messege = stripslashes(trim($_POST['messege'])); } if (trim($_POST['control']) != '31') { $controlError = __('Enter the correct answer to the question', 'theme_textdomain'); $hasError = true; } else { $control = trim($_POST['control']); } if (!isset($hasError)) { $emailTo = get_option('admin_email'); if (trim($_POST['subject']) != '') { $subject = trim($_POST['subject']); } else { $subject = ''; } $body = __('From', 'theme_textdomain') . ": $name <$email>\n\n" . __('Messege', 'theme_textdomain') . ":\n$messege\n\n--\n" . __('This mail is sent via contact form on ', 'theme_textdomain') . get_bloginfo('name') . "\n" . get_bloginfo('url'); $headers[] = "From: $name"; $headers[] = "Reply-To: $email"; /* $headers[] = "To: $emailTo"; */ wp_mail($emailTo, $subject, $body, $headers); $emailSent = true; unset($_POST['contactName'], $_POST['email'], $_POST['subject'], $_POST['messege'], $_POST['control']); } }Следующая часть кода отвечает за проверку результа отправки сообщения, и вывода соответствующего сообщения
if (isset($emailSent) && $emailSent == true) { ?>
И соответственно оставшаяся часть исходного кода отвечает за вывод самой формы на экран
Код, который вы добавили в файл
functions.php
вашей темы добавляет возможность вызова требуемого кода посредством шорткода[
contact
]
.Будьте осторожны! При смене темы оформления на вашем сайте, страница с формой обратной связи перестанет работать. Вам нужно будет вручную скопировать файл
contact.php
в директорию с новой темой и настроить перевод и оформление.
Источник populyarno.com