Я использую Ajax в wordpress для передачи списка запчастей, а полученные данные хочу передать в форму contactForms7.
Уже настроил Ajax в wordpress по этой инструкции - https://wp-kama.ru/id_2018/ajax-v-wordpress.html и создал свой тег формы (шорткод) в форму cf7, как это было написано здесь (работает нормально) - https://wp-kama.ru/plugin/contact-form-7/sozdanie-tegov-formy#dobavlenie-tega-formy-shortkoda-v-contact-form-7-variant-2
А вот связать получаемые данные в AJAX c этим тегом формы (шорткодом) для вставки в форму cf7 не удается.
Вот ссылка на мой проект web4hotel.ru/vellift
Не могу понять, то ли мне нужно связывать хуки и передавать данные через параметры, то ли использовать глобальную переменную для передачи данных из одной функции в другую?
PHP почти не знаю, да и вообще новичок.
Пробовал использовать global - не вышло. Пробовал запускать хуки из функции Ajax - не срабатывает шорткод в contactForms7.
Пожалуйста, помогите разобраться как перенести полученный список запчастей через Ajax в форму contactForms7. Уже несколько дней не могу решить.
//global $result;
/* AJAX из React*/
function react_callback() {
$data = json_decode(file_get_contents('php://input'));
$data = $data->arrObj;
foreach($data as $obj){
$result .= "$obj->id : $obj->winch : $obj->name : $obj->amount шт.; \n<br/>";
};
print_r($result);
wp_die();
//return apply_filters('wpcf7_form_elements', $result );
}
add_filter( 'wp_ajax_react', 'react_callback' );
add_filter( 'wp_ajax_nopriv_react', 'react_callback' );
/* Добавление тега формы (шорткода) в Contact Form 7 (в шаблон письма) */
add_filter( 'wpcf7_form_elements', 'do_shortcode');
function my_shortcod_cf7_func() {
return "Список деталей: \n<br/>". $result;
}
add_shortcode('my_shortcod_cf7', 'my_shortcod_cf7_func');
Насчёт $global
. Строка $global $result;
должна присутствовать как в react_callback()
, так и в my_shortcod_cf7_func()
. А у вас в my_shortcod_cf7_func()
$result
локальная переменная, равна null. Но это не поможет.
Во вкладке response браузера вы видите выдачу из react_callback()
. Страница не работает так, как вам хочется, в силу непонимания процессов клиент-серверного взаимодействия.
Страница формируется php. В этот момент работает CF7, создаёт форму, использует хуки. Вы своей функцией передаёте туда $result = null. react_callback()
не вызывается, процесс php завершает работу и отправляет сформированную страницу в браузер. В форме имеем то, что на картинке.
При срабатывании ajax, в свою очередь, не вызывается функция my_shortcod_cf7_func()
. Данные, сформированные в react_callback()
, уходят назад в браузер, вы видите их во вкладке response, и на этом всё.
Вам нужно выбранные пользователем запчасти не через ajax отправлять, а просто через JS записывать в hidden (или не hidden) input формы CF7. Этот input должен быть прописан в форме в админке. При отправке формы всё содержимое уйдёт в письме.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Задача такая меня постигла, имеем в базе ячейку money тип ячейки bigint туда пишется баланс сатоши, так как различного рода зачисления удобней...
Каким образом корректно отдавать файлы сформированные php word?
Почему я получаю ошибку компиляции? Среда разработки подсказывает, что нужно сделать тип возвращаемого значения intbyte, short в типе возвращаемого...
Я новичок в этом деле, но может кто подскажет есть ли возможность записи звука в Android, чтобы не использовать MediaRecorderAudioSource