if (isset($_POST['_feedback'])) {
$validate = true;
$errors = new WP_Error();
foreach ($_POST as $key => $value) {
if (!in_array($key, array('name', 'phone', 'email', 'theme', 'message', '_feedback', 'nonce'))) {
$validate = false;
$errors->add('ERROR_YOU_SENT_WRONG_DATA', 'Вы отправили неверные данные');
break;
}
else {
$_POST[$key] = trim($value);
}
}
if (!isset($_POST['name']) || $_POST['name'] == null) {
$validate = false;
$errors->add('ERROR_NAME_FIELD_IS_REQUIRED', 'Поле «Ваше имя» обязательно для заполнения');
}
else {
if (!preg_match('/^[ а-яА-ЯёЁ-]*$/u', $_POST['name'])) {
$validate = false;
$errors->add('ERROR_NAME_MUST_CONTAIN_ONLY_RUSSIAN_CHARACTERS', 'Поле «Ваше имя» может содержать только русские буквы');
}
elseif (mb_strlen($_POST['name']) < 2 || mb_strlen($_POST['name']) > 48) {
$validate = false;
$errors->add('ERROR_NAME_LENGTH_MUST_IN_2_32', 'Длина поля «Ваше имя» от 2 до 48 символов');
}
else {
$_POST['name'] = ucfirst(strtolower($_POST['name']));
}
}
if (!isset($_POST['phone'])) {
$validate = false;
$errors->add('ERROR_YOU_SENT_WRONG_DATA', 'Вы отправили неверные данные');
}
elseif (!isset($_POST['email'])) {
$validate = false;
$errors->add('ERROR_YOU_SENT_WRONG_DATA', 'Вы отправили неверные данные');
}
else {
if ($_POST['phone'] == null && $_POST['email'] == null) {
$validate = false;
$errors->add('ERROR_ONE_OF_TWO_FIELDS_MUST_BE_FILLED', 'Одно из полей («Номер телефона», «Email-адрес») должно быть заполнено');
}
else {
if ($_POST['phone'] != null) {
$_POST['phone'] = preg_replace('/[^0-9]/', '', $_POST['phone']);
if (!preg_match('/^[0-9]{10,11}$/', $_POST['phone'])) {
$errors->add('ERROR_YOU_HAVE_ENTERED_INVALID_PHONE', 'Вы ввели некорректный номер телефона');
$validate = false;
}
else {
$_POST['phone'] = preg_replace('/^[0-9]{0,1}([0-9]{3})([0-9]{3})([0-9]{2})([0-9]{2})$/', "8-$1-\$2-\$3-\$4", $_POST['phone']);
}
}
if ($_POST['email'] != null) {
if (!preg_match('/^.*@.*$/', $_POST['email'])) {
$validate = false;
$errors->add('ERROR_YOU_HAVE_ENTERED_INVALID_EMAIL', 'Вы ввели некорректный email-адрес');
}
$_POST['email'] = htmlspecialchars($_POST['email']);
}
}
}
if (!isset($_POST['theme'])) {
$validate = false;
$errors->add('ERROR_YOU_SENT_WRONG_DATA', 'Вы отправили неверные данные');
}
else {
$_POST['theme'] = htmlspecialchars($_POST['theme']);
if ($_POST['theme'] == null) $_POST['theme'] = 'Без темы';
}
if (!isset($_POST['message'])) {
$validate = false;
$errors->add('ERROR_YOU_SENT_WRONG_DATA', 'Вы отправили неверные данные');
}
else {
$_POST['message'] = htmlspecialchars($_POST['message']);
}
if ($validate) {
$to = array(
'<...>@gmail.com',
// '<...>@gmail.com'
);
$subject = 'Запрос с сайта <...> [Обратная связь]';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html' . "\r\n";
$headers .= 'From: ' . get_bloginfo('name') . ' <noreply@<...>>' . "\r\n";
$message = 'Имя: ' . $_POST['name'] . '<br />';
$message .= 'Телефон: ' . $_POST['phone'] . '<br />';
$message .= 'Email: ' . $_POST['email'] . '<br />';
$message .= 'Тема: ' . $_POST['theme'] . '<br />';
$message .= 'Сообщение: ' . $_POST['message'];
$sent = wp_mail($to, $subject, $message, $headers);
if ($sent) {
// wp_redirect(home_url() . '/feedback');
$errors->add('SUCCESS_SENT', 'Ваше сообщение было отправлено');
}
else {
$errors->add('ERROR_SENT', 'Возникла ошибка при отправке письма');
}
}
else {
}
}