Это очередная статья о том, как сделать ваш сайт на базе 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
RSS & RSS to Email