Я пытаюсь создать 2 формы в WordPress. После отправки первой формы эта форма перенаправляет на страницу благодарности и отправляет письмо на добавленный идентификатор электронной почты. На этой странице благодарности есть кнопка, после нажатия на которую будет скрытая форма, в которой должны храниться значения 1-й формы, а после нажатия она будет отправлена. Для этого я создаю 2 шорткода. 1-й шорткод -
$nonce = wp_nonce_field( "Download Guide Form", "download_nonce", true, false );
$field = 'Enter business email';
$fieldname = 'Full Name';
$fieldjob = 'Job Title';
$fieldcompany = 'Company Name';
$fieldphone = 'Phone Number';
$action = home_url('/demo2/');
$script = '';
if( is_page('demo') && isset($_POST['schedule_call_email']) ) {
$script = '<script>
jQuery("form.et_pb_contact_form").on("submit", function (event) {
event.preventDefault();
jQuery(this).ajaxSubmitDownloadForm();
});
jQuery.fn.ajaxSubmitDownloadForm = function() { // custom function to submit form
var formDataVar = jQuery(this).serialize();
jQuery.ajax({
url: "'.home_url().'/wp-admin/admin-ajax.php",
type: "POST",
data: formDataVar,
success: function(response) {
var obj = JSON.parse(response);
if( obj.error ){
jQuery("form.et_pb_contact_form").find("[name]").removeClass("et_contact_error");
var errors = obj.error;
for(var err in errors){
var error_key = err;
var error_val = errors[err];
jQuery("form.et_pb_contact_form [name=\""+error_key+"\"]").addClass("et_contact_error");
//jQuery("form.et_pb_contact_form [name=\""+error_key+"\"]").attr("placeholder", error_val);
}
jQuery("#cnt-message").html( \'<div class="alert alert-danger">Please update the highlighted field(s)</div>\' );
}
if( obj.success ){
window.location.href="'.home_url('/demo2/').'";
}
jQuery("html, body").animate({
scrollTop: jQuery("#cnt-message").offset().top - 120
}, 1000);
}
});
return false;
}
</script>';
}
return <<<EOF
<div class="schedule_call_form">
<form method="POST" action="{$action}" id="form_schedule_call" class="et_pb_contact_form">
<input type="email" name="schedule_call_email" id="schedule_call_email" placeholder="$field" required />
<input type="text" name="schedule_call_name" id="schedule_call_name" placeholder="$fieldname" required />
<input type="text" name="schedule_call_job" id="schedule_call_job" placeholder="$fieldjob" required />
<input type="text" name="schedule_call_company" id="schedule_call_company" placeholder="$fieldcompany" required />
<input type="text" name="schedule_call_phone" id="schedule_call_phone" placeholder="$fieldphone" required />
<button type="submit" value="submitDownloadForm">Submit</button>
</form>
</div>{$script}
EOF;
}
add_shortcode( 'schedule_call_form', 'custom_schedule_call_form_func' );
function submitDownloadForm(){
$output = array();
if( isset($_POST['download_nonce']) && $_POST['download_nonce']!='' && wp_verify_nonce($_POST['download_nonce'], 'Download Guide Form') ) {
$error = array();
$schedule_call_name = isset($_POST['schedule_call_name']) ? sanitize($_POST['schedule_call_name']) : '';
$schedule_call_email = isset($_POST['schedule_call_email']) ? $_POST['schedule_call_email'] : '';
$schedule_call_phone = isset($_POST['schedule_call_phone']) ? $_POST['schedule_call_phone'] : '';
$schedule_call_job = isset($_POST['schedule_call_job']) ? sanitize($_POST['schedule_call_job']) : '';
$schedule_call_company = isset($_POST['schedule_call_company']) ? md5($_POST['schedule_call_company']) : '';
if( empty($schedule_call_name) )
$error['schedule_call_name'] = 'Enter your name';
elseif( !is_alphabets($schedule_call_name) )
$error['schedule_call_name'] = 'Invalid name, enter alphabets only';
if( empty($schedule_call_email) )
$error['schedule_call_email'] = 'Enter your email address';
elseif( $schedule_call_email!='' && !filter_var($schedule_call_email, FILTER_VALIDATE_EMAIL) )
$error['schedule_call_email'] = 'Invalid email address';
if( empty($schedule_call_company) )
$error['schedule_call_company'] = 'Enter your company name';
if( strlen($schedule_call_phone) < 10 && !empty($schedule_call_phone) )
$error['schedule_call_phone'] = 'Invalid phone number, enter numbers only';
if( empty($schedule_call_job) )
$error['schedule_call_job'] = 'Enter job title';
if( count($error)==0 ){
$desc = "";
$desc .= "Contact Name: $schedule_call_name<br>";
$desc .= "Business Email: $schedule_call_email<br>";
$desc .= "Phone: $schedule_call_phone<br>";
$desc .= "Company: $schedule_call_company<br>";
$desc .= "Job Title: $schedule_call_job<br>";
$subject = "Contact Enquiry - ".get_bloginfo('name');
$new_contact = array(
'post_title' => "Contact Enquiry - ".$schedule_call_name,
'post_content' => $desc,
'post_status' => 'publish',
'post_type' => 'contacts',
'post_author' => '0'
);
$enquiry_id = wp_insert_post($new_contact);
$mailText = "";
$mailText .= "$schedule_call_name has filled the contact enquiry form. Below are the details:<br><br>";
$mailText .= $desc;
$mailText .= "<br><br><br>Regards,<br>".get_bloginfo('name');
$message = do_shortcode('').'
<p style="font-size:16px; color:#bc0019; line-height:1.75; padding:0; margin:0 0 15px; text-align:left;"><strong>DEAR ADMIN,</strong></p>
<p style="font-family:\'Open Sans\', Garamond, Times New Roman; font-size:13px; color:#666666; line-height:1.75; padding:0; margin:0 0 15px; text-align:left;">'.$mailText.'</p>
'.do_shortcode('');
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
$headers[] = 'From: '.$schedule_call_name.' <'.$schedule_call_email.'>';
$mail = wp_mail( '', $subject, $message, implode("\r\n", $headers) );
$mail1 = wp_mail( "", $subject, $message, implode("\r\n", $headers) );
$output['success'] = "<p><strong>WE HAVE RECEIVED YOUR REQUEST</strong></p><p>We will be in touch with you shortly.</p>";
}else{
$output['error'] = $error;
}
}
echo json_encode($output);
die();
}
add_action('wp_ajax_submitDownloadForm', 'submitDownloadForm');
add_action('wp_ajax_nopriv_submitDownloadForm', 'submitDownloadForm');
и создайте такой же шорткод для 2-й формы. Формы работают нормально, но проблема заключается в том, что после отправки на нее перенаправляется страница с благодарностью, но она не отправляется после нажатия кнопки страницы с благодарностью, после чего она отправляет 2 письма администратору. Но я хочу отправить письмо после отправки 1-й формы, а также для 2-й формы. Но 2-й для должен автоматически заполняться значениями формы 1.