После отправки одна форма должна отправить письмо, а вторая форма должна сохранить значения первой формы и будет отправлена - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...