когда нечего делать, а творческая душа требует реализации и хочется что-то сделать или написать, то я пишу сюда или делаю что-то на этом сайте. Кому интересна web-разработка, wordpress и то что рядом с этим, то заходите на мой сайт и читайте всякое...
Как сделать свою форму обратной связи для WordPress. Как обрабатывать POST-запросы в wp
Йо-йо! Вам никогда не нужно было создать простую форму в wordpress?! Или вам никогда не становилось интересно как работает Contact Form 7?!
Вот мне стало интересно и даже нужно, когда я делал свой плагин «Зооспас«. В нём я встроил форму т.к. не хотел утяжелять сайты, которые будут на нём работать. И у меня это получилось. Сайт zoospas27.ru имеет время ответа сервера около 120-170мс.
Так как же работать с POST-запросами в WordPress?! Начну сразу с примера — форма.
И объявляем функцию, которая будет обрабатывать события, у нас это custom_action_name
function custom_action_name(){
// Получаем данные из массива $_POST
$agrs = $_POST;
// Код обработки функции
}
На этом можно было закончить, но я вам покажу свой пример из плагина «Зооспас».
Пример
add_action( 'admin_post_zoospas_form', 'zoospas_form_action' );
add_action( 'admin_post_nopriv_zoospas_form', 'zoospas_form_action' );
function zoospas_form_action(){
// Получил данные
$args = $_POST;
// Вспомогательный класс для хранения переменных (тут я получаю email админа сайта)
$to = ZoospasVars::$options['form']['email'];
// Отчищаю email от лишнего на всякий случай
$to = sanitize_email($to);
// Получаю данные из формы
$subject = $args['subject'];
$email = $args['email'];
$phone = $args['tel'];
// Устанавливаю заголовки письма
$headers = array(
'From: Zoospas <info@zoospas.ru>',
'content-type: text/html; charset=UTF-8',
'Cc: Zoospas <'. $to .'',
'Cc: '. $to
);
// Собираю сообщение
$message = '';
$message .= '<table>';
$message .= '<thead><tr><td>' . __('New appeal from the site') . '</td></tr></thead>';
$message .= '<tbody>';
$message .= '<tr><td>' . __('Email', 'zoospas') . '</td><td>' . $email . '</td></tr>';
$message .= '<tr><td>' . __('Phone number', 'zoospas') . '</td><td>' . $phone . '</td></tr>';
$message .= '</tbody></table>';
$responce = wp_mail( $to, $subject, $message, $headers );
// Получаю адрес страницы с которой произошёл запрос
$addr = $_SERVER['HTTP_REFERER'];
$addr = str_replace('?zs_mail_responce=true', '', $addr);
$addr = str_replace('?zs_mail_responce=false', '', $addr);
// Вспомогательная переменная. В $_GET будет установлена переменная в зависимости от успеха отправки email'а
$concat = '';
if($responce == true){
$concat = '?zs_mail_responce=true';
header('Location: ' . $addr . $concat);
exit;
} else {
$concat = '?zs_mail_responce=false';
header('Location: ' . $addr . $concat);
exit;
}
}
Вот какая обработка формы у меня получилась. Надею вам будет полезен этот пример
P.S.
Желаю вам удачи в ваших разработках. А если вам интересна судьба бездомных животных помогите организации «Зооспас» или установите плагин zoospas на ваш сайт и начните помогать тем, кто в этом нуждается.
Не забудьте написать комментарий!)
Поддержи Xakplant
Я давно хочу развить видеоверсию, но пока этого не получается из-за нехватки ресурсов. Сейчас я собираю деньги на новый компьютер и микрофон. Поддержи xaklant и ты увидишь полезные видео быстрее.