@Suil

Форма обратной связи для большого количества input созданных с помощью ACF (повторителем)?

Сайт на Wordpress. На сайте есть форма, инпуты созданы с помощью плагина ACF | Advanced Custom Fields, через повторитель.
Как все поля отправить через почту? Полей очень много, каждой вручную присваивать переменную думаю не вариант. В Php не силен, может есть решения как наподобие в js собрать в массив с помощью serialize и отправить на почту.

Обработчик отправки

<?php
$post = (!empty($_POST)) ? true : false;
if($post) {
	$email = htmlspecialchars(trim($_POST['email']));
	$name = htmlspecialchars(trim($_POST['name']));
	$sub = htmlspecialchars(trim($_POST["sub"]));
	$message = htmlspecialchars(trim($_POST['message']));
	$error = '';
	if(!$name) {$error .= 'Укажите свое имя. ';}
	if(!$email) {$error .= 'Укажите электронную почту. ';}
	if(!$sub) {$error .= 'Укажите тему обращения. ';}
	if(!$message || strlen($message) < 1) {$error .= 'Введите сообщение. ';}
	if(!$error) {
		$address = "mail@example.ru";
		$mes = "Почта: ".$email."\n\nИмя: ".$name."\n\nТема: " .$sub."\n\nСообщение: ".$message."\n\n";
		$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nReply-To:$email\r\nFrom:$name <contact>");
		if($send) {echo 'OK';}
	}
	else {echo '<div class="err">'.$error.'</div>';}
}
?>


jQuery(document).ready(function($) {
	$("#form").submit(function() {
		var str = $(this).serialize();
		$.ajax({
			type: "POST",
			url: "/wp-content/themes/form/phpmailer/send.php",
			data: str,
			success: function(msg) {
				if(msg == 'OK') {
					result = '<div class="ok">Сообщение отправлено</div>';
					$("#fields").hide();
				}
				else {result = msg;}
				$('#note').html(result);
			}
		});
		return false;
	});
});
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
ginesufa
@ginesufa
попробуйте
get_fields([$post_id], [$format_value]); // Возвращает массив значений полей (имя => значение) для определенного поста.

Источник: https://www.advancedcustomfields.com/resources/get...
Чтобы перебирать поля из Повторителя используйте цикл
// Check rows existexists.
if( have_rows('repeater_field_name') ):

    // Loop through rows.
    while( have_rows('repeater_field_name') ) : the_row();

        // Load sub field value.
        $sub_value = get_sub_field('sub_field');
        // Do something...

    // End loop.
    endwhile;

// No value.
else :
    // Do something...
endif;


Источник: https://www.advancedcustomfields.com/resources/rep...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы