Как отправить письмо из WordPress php? - PullRequest
0 голосов
/ 23 марта 2020

У меня проблема с отправкой электронного письма из формы контактной страницы в Wordpress.

Это форма:

<?php
  /*
  Template Name: Contact
  */
  ?>
<?php get_header();?>
<div class="container-fluid main-content content-color">
  <div class="row justify-content-center">
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 pb-5">
      <!--Form with header-->
      <form action="" method="post">
        <div class="card border-primary rounded-0">
          <div class="card-header p-0">
            <div class="bg-info text-white text-center py-2">
              <h3><i class="fa fa-envelope"></i> Contactanos</h3>
              <p class="m-0">Con gusto te ayudaremos</p>
            </div>
          </div>
          <div class="card-body p-3">
            <!--Body-->
            <div class="form-group">
              <div class="input-group mb-2">
                <div class="input-group-prepend">
                  <div class="input-group-text"><i class="fa fa-user text-info"></i></div>
                </div>
                <input type="text" class="form-control" id="nombre" name="nombre" placeholder="Nombre y Apellido" required>
              </div>
            </div>
            <div class="form-group">
              <div class="input-group mb-2">
                <div class="input-group-prepend">
                  <div class="input-group-text"><i class="fa fa-envelope text-info"></i></div>
                </div>
                <input type="email" class="form-control" id="nombre" name="email" placeholder="ejemplo@gmail.com" required>
              </div>
            </div>
            <div class="form-group">
              <div class="input-group mb-2">
                <div class="input-group-prepend">
                  <div class="input-group-text"><i class="fa fa-comment text-info"></i></div>
                </div>
                <textarea class="form-control" placeholder="Envianos tu Mensaje" required name="msj"></textarea>
              </div>
            </div>
            <div class="text-center">
              <input type="submit"  value="Enviar" class="btn btn-info btn-block rounded-0 py-2">
            </div>
          </div>
        </div>
      </form>
      <!--Form with header-->
    </div>
  </div>
</div>
<?php get_footer(); ?>

Можно ли отправить электронное письмо на адрес c электронная почта нажатием кнопки отправки? Я попытался использовать JavaScript, но он ничего не отправляет, и я не понимаю функцию, которая есть в Wordpress wp_email(), так как всякий раз, когда я вызываю его, он показывает эту ошибку:

"Uncaught Error : Вызов неопределенной функции wp_mail () "

1 Ответ

0 голосов
/ 23 марта 2020

Ваша форма не работает, потому что нет действия в вашей форме. Это должно быть что-то вроде:

<form method="post" action="/send-email.php">

И в send-email. php файле у вас будет функция электронной почты. Пример:

<?php
if(isset($_POST['submit'] == 'Send')) {
    $ToEmail = 'sample@sample.com';
    $EmailSubject = 'Contact Form';
    $mailheader = "From: " . $_POST["email"] . "\r\n";
    $mailheader .= "Reply-To: " . $_POST["email"] . "\r\n";
    $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $MESSAGE_BODY = " <strong>Name:</strong> " . $_POST["name"] . "";
    $MESSAGE_BODY .= "<br> <strong>Email:</strong> " . $_POST["email"] . "";
    $MESSAGE_BODY .= "<br> <strong>Telephone:</strong> " . $_POST["telephone"] . "";
    $MESSAGE_BODY .= "<br><br> <strong>Message:</strong> " . nl2br($_POST["message"]) . "";
    $status = mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die("Failure");

}

if($status){
    echo "your success message";
}
 ?>

Приведенный выше код не протестирован, но он должен работать, если он настроен на поля формы. Вы можете использовать wp_mail () вместо php mail () в вышеуказанном файле.

Альтернативный способ отправить вашу форму через AJAX. Вам нужно будет отключить поведение кнопки «Отправить» по умолчанию и добавить код jQuery (или JavaScript), который при нажатии отправит данные формы через Ajax. Этот ответ или этот может помочь вам в этом.

Наконец, вы всегда можете использовать популярный плагин формы (например, CF7 ) для сэкономить много времени.

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