Привет, я с вордпресом вообще на Вы. Помогите советом как можно реализовать следующее. Есть сайт на вордпрес и там есть форма для контакта. Нужно после ввода этой формы юзером отправить запрос на другой сервер с этими данными. То есть пользователь ввёл данные и мы их отправляем на другой сервер. Я писал много на Yii2, Laravel и моё фреймворковское мышление не даёт понять логику в вордпресе. Подскажите как это можно реализовать, где хотя бы найти файлы с процессом обработки формы контактов что бы добавить туда код для отправки на другой сервер
Код формы:
<form class="et_pb_contact_form clearfix" method="post" action="http://linkdnetwork.com/contact/">
<p class="et_pb_contact_field et_pb_contact_field_0 et_pb_contact_field_half" data-id="first name" data-type="input">
<label for="et_pb_contact_first name_1" class="et_pb_contact_form_label">First Name</label>
<input type="text" id="et_pb_contact_first name_1" class="input" value="" name="et_pb_contact_first name_1" data-required_mark="required" data-field_type="input" data-original_id="first name" placeholder="First Name">
</p>
<p class="et_pb_contact_field et_pb_contact_field_1 et_pb_contact_field_half et_pb_contact_field_last" data-id="last name" data-type="input">
<label for="et_pb_contact_last name_1" class="et_pb_contact_form_label">Last Name</label>
<input type="text" id="et_pb_contact_last name_1" class="input" value="" name="et_pb_contact_last name_1" data-required_mark="required" data-field_type="input" data-original_id="last name" placeholder="Last Name">
</p>
<p class="et_pb_contact_field et_pb_contact_field_2 et_pb_contact_field_last" data-id="company/organisation name" data-type="input">
<label for="et_pb_contact_company/organisation name_1" class="et_pb_contact_form_label">Company/Organisation Name</label>
<input type="text" id="et_pb_contact_company/organisation name_1" class="input" value="" name="et_pb_contact_company/organisation name_1" data-required_mark="required" data-field_type="input" data-original_id="company/organisation name" placeholder="Company/Organisation Name">
</p>
<p class="et_pb_contact_field et_pb_contact_field_3 et_pb_contact_field_last" data-id="website url (if applicable)" data-type="input">
<label for="et_pb_contact_website url (if applicable)_1" class="et_pb_contact_form_label">Website URL (if applicable)</label>
<input type="text" id="et_pb_contact_website url (if applicable)_1" class="input" value="" name="et_pb_contact_website url (if applicable)_1" data-required_mark="required" data-field_type="input" data-original_id="website url (if applicable)" placeholder="Website URL (if applicable)">
</p>
<p class="et_pb_contact_field et_pb_contact_field_4 et_pb_contact_field_half" data-id="email" data-type="email">
<label for="et_pb_contact_email_1" class="et_pb_contact_form_label">Email</label>
<input type="text" id="et_pb_contact_email_1" class="input" value="" name="et_pb_contact_email_1" data-required_mark="required" data-field_type="email" data-original_id="email" placeholder="Email">
</p>
<p class="et_pb_contact_field et_pb_contact_field_5 et_pb_contact_field_half et_pb_contact_field_last" data-id="phone" data-type="input">
<label for="et_pb_contact_phone_1" class="et_pb_contact_form_label">Phone</label>
<input type="text" id="et_pb_contact_phone_1" class="input" value="" name="et_pb_contact_phone_1" data-required_mark="required" data-field_type="input" data-original_id="phone" placeholder="Phone">
</p>
<p class="et_pb_contact_field et_pb_contact_field_6 et_pb_contact_field_last" data-id="preferred method of contact" data-type="input">
<label for="et_pb_contact_preferred method of contact_1" class="et_pb_contact_form_label">Preferred Method of Contact</label>
<input type="text" id="et_pb_contact_preferred method of contact_1" class="input" value="" name="et_pb_contact_preferred method of contact_1" data-required_mark="required" data-field_type="input" data-original_id="preferred method of contact" placeholder="Preferred Method of Contact">
</p>
<input type="hidden" value="et_contact_proccess" name="et_pb_contactform_submit_0">
<input type="text" value="" name="et_pb_contactform_validate_0" class="et_pb_contactform_validate_field">
<div class="et_contact_bottom_container">
<button type="submit" class="et_pb_contact_submit et_pb_button">Submit</button>
</div>
<input type="hidden" id="_wpnonce-et-pb-contact-form-submitted" name="_wpnonce-et-pb-contact-form-submitted" value="3ad4ba832a"><input type="hidden" name="_wp_http_referer" value="/contact/">
</form>
Форма у вас от темы Divi, указывает на саму страницу, где она размещена. После отправки формы, происходит обновление страницы, как обычно. При генерации элемента формы происходит её обработка, если установлены поля в $_POST
. Обработка проводится в wp-content/themes/Divi/includes/builder/main-modules.php
, в ET_Builder_Module_Contact_Form->shortcode_callback()
.
Никаких хуков и фильтров для дополнительной обработки формы, к сожалению, разработчики Divi не предусмотрели.
Что можно сделать? Создать дочернюю тему от Divi, в functions.php дочерней темы добавить такой код:
function process_contact_form() {
// номер вашей контактной формы
// (у вас на странице - 0, судя по id="et_pb_contact_form_0")
$et_pb_contact_form_num = 0;
$nonce_result = isset( $_POST['_wpnonce-et-pb-contact-form-submitted'] ) && wp_verify_nonce( $_POST['_wpnonce-et-pb-contact-form-submitted'], 'et-pb-contact-form-submit' ) ? true : false;
// check that the form was submitted and et_pb_contactform_validate field is empty to protect from spam
if ( $nonce_result && isset( $_POST['et_pb_contactform_submit_' . $et_pb_contact_form_num] ) && empty( $_POST['et_pb_contactform_validate_' . $et_pb_contact_form_num] ) ) {
// обработка формы и отправка запроса по wp_remote_post()
}
}
add_action( 'init', 'process_contact_form' );
Этот код по событию init
(инициализация WordPress) проверяет, есть ли nonce, есть ли элемент в $_POST
, свидетельствующий об отправке почты, и делает вашу обработку данных $_POST
. Посмотрите код в ET_Builder_Module_Contact_Form->shortcode_callback()
, на предмет того, как производится очистка элементов $_POST
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Страница работает -http://uk/basic/web/indexphp?r=site%2Fcontact Раскоментирываю строчки в Yii2
Пишу на php, использую для написания кода библиотеку https://githubcom/php-telegram-bot/core
Появилась необходимость отправлять письмо с допинформацией после оплаты клиентом в яндекс кассе
Подскажите как мне правильно переписать SetPropertyValuesEx для смены статуса у заявки в битриксе по клику Текущие данные : 41792861 XML_ID 200 - id