Сообщения Wordpress исчезают после использования формы отправки с методом «post» - PullRequest
0 голосов
/ 09 января 2019

я создал тему для WordPress для клиента. Я попытался включить php mailer для отправки писем, а также метод «have_posts ()», специфичный для wordpress, чтобы показать все различные посты, создаваемые через панель администратора.

При первой загрузке страницы все работает нормально. Но после отправки письма с формой отправки сообщения из WordPress исчезают. Кажется, это проблема с методом post из формы отправки, так как я тестировал его без кода phpmailer и ссылок.

Пожалуйста, помогите мне. Я ищу решение с нескольких дней.

Спасибо:)

<?php 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require 'vendor/PHPMailer/src/Exception.php';
require 'vendor/PHPMailer/src/PHPMailer.php';
require 'vendor/PHPMailer/src/SMTP.php';
$msg = '';
$msgone ="";
$msgtwo ="";
$msgthree = '';


if (array_key_exists('email', $_POST)) {
    date_default_timezone_set('Etc/UTC');
    //Create a new PHPMailer instance
    $mail             = new PHPMailer();

    $mail->IsSMTP();
    //Tell PHPMailer to use SMTP - requires a local mail server
    //Faster and safer than using mail()
   $mail->Host = 'server';  // Specify main and backup SMTP servers
   $mail->SMTPAuth = true;                               // Enable SMTP authentication
   $mail->Username = 'mail';                 // SMTP username
   $mail->Password = 'password';                           // SMTP password
   $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
  $mail->Port =  587;                           // TCP port to conne
        //Use a fixed address in your own domain as the from address
        //**DO NOT** use the submitter's address here as it will be forgery
        //and will cause your messages to fail SPF checks
         //Recipients
        $mail->setFrom('mail');
        $mail->addAddress('mail');     // Add a recipient
    //Put the submitter's address in a reply-to header
    //This will fail if the address provided is invalid,
    //in which case we should ignore the whole request
    if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
        $mail->Subject = 'PHPMailer contact form';
        //Keep it simple - don't use HTML
        $mail->isHTML(false);
        //Build a simple message body
        $mail->Body = <<<EOT
Email: {$_POST['email']}
Company: {$_POST['company']}
Company: {$_POST['phone']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
        //Send the message, check for errors
        if (!$mail->send()) {
            //The reason for failing to send will be in $mail->ErrorInfo
            //but you shouldn't display errors to users - process the error, log it on your server.
            $msgone = 'Sorry, etwas ist schief gelaufen. Bitte versuche es später nochmal.';
        } else {
            $msgtwo = 'Die Nachricht wurde abgeschickt! Danke für deine Kontaktaufnahme mit uns.';
        }
    } else {
        $msgthree = 'Ungültige Email Adresse. Die Nachricht wurde nicht abgeschickt.';
    }

}

?>

над кодом php mailer

<form id="contactForm" action="#contactForm" method="post">
    <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <input class="form-control" id="name" name="name" type="text" placeholder="Vor- und Nachname *" required>
                <p class="help-block text-danger"></p>
            </div>
        </div>
        <div class="col-md-12">
            <div class="form-group">
                <input class="form-control" id="company" name="company" type="text" placeholder="Firmenname">
                <p class="help-block text-danger"></p>
            </div>
        </div>
        <div class="col-md-12">
            <div class="form-group">
                <input class="form-control" id="email" name="email" type="email" placeholder="E-mail *" required>
                <p class="help-block text-danger"></p>
            </div>
        </div>
        <div class="col-md-12">
            <div class="form-group">
                <input class="form-control" id="phone" name="phone" type="tel" placeholder="Telefonnummer ">
                <p class="help-block text-danger"></p>
            </div>
        </div>
        <div class="col-md-12">
            <div class="form-group">
                <textarea class="form-control" id="message" name="message" type="text" placeholder="Deine Nachricht"></textarea>
                <p class="help-block text-danger"></p>
            </div>
        </div>
        <div class="clearfix"></div>

        <div id="alert-message-container">
            <?php if (!empty($msgone)){echo 
            "<div class='text-center alert alert-warning alert-dismissible fade show alert-message-class'>
                <button type='button' class='close' data-dismiss='alert' aria-label='Close'>
                    <span aria-hidden='true'>&times;</span>
                </button>
                $msgone
            </div>";}
            ?>
            <?php if (!empty($msgtwo)){echo
            "<div class='text-center alert alert-success alert-dismissible fade show alert-message-class'>
                <button type='button' class='close' data-dismiss='alert' aria-label='Close'>
                    <span aria-hidden='true'>&times;</span>
                </button>
                $msgtwo
            </div>";}?>
            <?php if (!empty($msgthree)){echo 
            "<div class='text-center alert alert-danger alert-dismissible fade show alert-message-class'>
                <button type='button' class='close' data-dismiss='alert' aria-label='Close'>
                    <span aria-hidden='true'>&times;</span>
                </button>
                $msgthree
            </div>";}?>
        </div>  
        <div class="col-lg-12 text-center">
            <div id="success"></div>
            <button id="sendMessageButton" name="submit" class="btn  btn-xl text-uppercase" type="submit" >Senden</button>
        </div>

    </div>
</form>

над формой представления

<?php $modal_article_counter = 0; ?>

                        <!-- Start the Loop. -->
                        <?php 
                            if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

                                        <?php ++$modal_article_counter; ?>

                                        <!-- Post template start -->
                                        <div class="list-group" onclick="triggervar('#modal-article-<?php echo $modal_article_counter; ?>')">
                                            <a href="javascript:void(0)" class="list-group-item bg-sr text-white" >
                                                <h4 class="list-group-item-heading"><?php the_title(); ?></h4>
                                                <div class="row no-m no-p">
                                                    <div class="col-12 col-md-8  no-m no-p article-category">
                                                        <p class="no-m no-p"><u><small>Kategorie: <?php foreach((get_the_category()) as $category) { echo $category->cat_name . ' '; } ?></small></u></p>
                                                    </div>
                                                    <div class="col-12 col-md-4 no-m no-p article-date">
                                                        <p class="no-m no-p"><u><small><?php the_time('F jS, Y'); ?></small></u></p>
                                                    </div>
                                                </div>
                                            </a>
                                        </div>                                  

                                <!-- Stop The Loop (but note the "else:" - see next line). -->
                                 <?php endwhile; else : ?>
                                <!-- The very first "if" tested to see if there were any Posts to -->
                                <!-- display.  This "else" part tells what do if there weren't any. -->
                                <p class="text-center text-sr"><?php esc_html_e( 'Sorry wir haben aktuell keine Neuigkeiten für dich.' ); ?></p>

                            <!-- REALLY stop The Loop. -->
                             <?php endif; 

                        ?>

над циклом WordPress для отображения сообщений

...