Как отобразить текст после отправки формы на ту же страницу с помощью wp mail? - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу иметь возможность отображать текст на той же странице после нажатия кнопки, и только когда все обязательные поля в порядке. Я использую jquery -validate / 1.19.1 для проверки моих полей. Это моя форма:

<form action="<?php the_permalink(); ?>" id="contactForm" method="post">
    <ul>
        <li><input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" class="required requiredField" placeholder="Namn"/></li>
        <li><input type="text" name="email" id="email" value="<?php if(isset($_POST['email']))  echo $_POST['email'];?>" class="required requiredField email" placeholder="Epost"/></li>
        <li>
            <label for="commentsText" style="width:100%;">Domäner:</label>
            <textarea name="comments" id="commentsText" rows="6" cols="46"></textarea>
        </li>
        <li><button type="submit" class="skicka-offert">Skicka offert</button></li>
    </ul>
    <input type="hidden" name="submitted" id="submitted" value="true" />
</form>

Ниже я использую Wordpress wp mail для отправки моей формы:

if(isset($_POST['submitted'])) {
    if(trim($_POST['contactName']) === '') {
        $nameError = 'Name.';
        $hasError = true;
    } else {
        $name = trim($_POST['contactName']);
    }

    if(trim($_POST['email']) === '')  {
        $emailError = 'Mail.';
        $hasError = true;
    } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", trim($_POST['email']))) {
        $emailError = 'You entered an invalid email address.';
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }

    if(trim($_POST['comments']) === '') {
        $commentError = 'Please enter a message.';
        $hasError = true;
    } else {
        if(function_exists('stripslashes')) {
            $comments = stripslashes(trim($_POST['comments']));
        } else {
            $comments = trim($_POST['comments']);
        }
    }

    if(!isset($hasError)) {
        $emailTo = get_option('tz_email');
        if (!isset($emailTo) || ($emailTo == '') ){
            $emailTo = get_option('admin_email');
        }
        $subject = '[Domänsök] From '.$name;
        $body = "Name: $name \n\nEmail: $email \n\nComments: $comments";
        $headers = 'From: '.$name.' <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

        wp_mail($emailTo, $subject, $body, $headers);
        $emailSent = true;

        $sent_message = wp_mail( $to, $subject, $message, $headers );
    }
}

Я использую пример со страницы https://catswhocode.com/wordpress-contact-form-without-plugin/

Я пробовал много способов, но не работает: (.

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