WordPress在Required()方法之后停止执行代码

时间:2016-06-16 作者:IAmMilinPatel

我正在尝试为自定义联系人表单设置SMTP。

我已将最新的PHPMailer文件夹放置在我的主题文件夹中。

我为联系人表单创建了一个页面模板,并在其中添加了联系人表单的代码,下面添加了SMTP代码,如下所示,

<?php
                require("PHPMailer/class.PHPMailer.php");
                require \'PHPMailer/PHPMailerAutoload.php\';
                $mail = new PHPMailer;
                //$mail->SMTPDebug = 3; // Enable verbose debug output
                $mail->isSMTP(); // Set mailer to use SMTP
                $mail->Host = \'localhost\'; // Specify main and backup SMTP servers
                $mail->SMTPAuth = false; // Enable SMTP authentication
                //$mail->Username = \'\'; // SMTP username
                //$mail->Password = \'\'; // SMTP password
                //$mail->SMTPSecure = \'tls\'; // Enable TLS encryption, `ssl` also accepted
                $mail->Port = 25; // TCP port to connect to
                $mail->setFrom($email, $sendername);
                $mail->addAddress(\'[email protected]\', \'Joe User\'); // Add a recipient
                //$mail->addAddress(\'[email protected]\'); // Name is optional
                $mail->addReplyTo($email, $sendername);
                $mail->addCC(\'[email protected]\');
                //$mail->addBCC(\'[email protected]\');
                //$mail->addAttachment(\'/var/tmp/file.tar.gz\'); // Add attachments
                //$mail->addAttachment(\'/tmp/image.jpg\', \'new.jpg\'); // Optional name
                $mail->isHTML(true); // Set email format to HTML
                $mail->Subject = \'Test Mail\';
                $comment = $comment . "\\r\\n<br/>" . "<br/>\\r\\nIP Address: " . $id . "<br/>\\r\\nUser Agent: " . $browser . "<br/>\\r\\nUser Agent: " . "<br/>\\r\\nReferrer: " . $referrer . "<br/>\\r\\nCity: " . $city . "<br/>\\r\\nRegion: " . $region . "<br/>\\r\\nCountry: " . $country . "<br/>\\r\\nLatitude: " . $latitude . "<br/>\\r\\nLongitude: " . $longitude;
                $mail->Body    = $comment;
                $mail->AltBody = $comment;
                if($sendernameErrFlag == 0 && $emailErrFlag == 0 && $subjectErrFlag == 0 && $commentErrFlag == 0) {
                    $mail->send();
                    echo "hi";
                    $pagelink = the_permalink();
                    echo \'<div id="popup1" class="overlay">
                        <div class="popup">
                            <a class="close" href="\' . $pagelink . \'">&times;</a>
                            <div class="content">
                                Message sent successfully!!!
                            </div>
                        </div>
                    </div>\';
                    //echo \'<script>alert("Message sent successfully!!!");</script>\';
                } else {
                    $sendernameErrFlag = $emailErrFlag = $subjectErrFlag = $commentErrFlag = 2;
                }
            ?>
但当我提交联系人表单时,wordpress在到达写有require()的行时停止执行代码。任何和所有写在下面的代码都不会执行。

如果我将require()放在表单上方,那么表单也不会显示在页面中。如果我把它放在标题中,整个页面都不会显示。

这里有什么问题?为什么WordPress不接受并执行require()?

1 个回复
最合适的回答,由SO网友:IAmMilinPatel 整理而成

我注意到了require(), require_once(), include() and include_once() 这些方法不知何故不起作用。使用这些方法调用的文件没有被调用,代码从此点开始停止向前执行。

经过大量的谷歌搜索和R&;D我没有找到任何使上述方法起作用的解决方案。

所以我决定研究tweentysixteen 并发现WordPress有一个内置函数,用于包含其他PHP文件。

所以我想尝试一下class.PHPMailer.php and PHPMailerAutoload.php 文件。如果更改了线路

require("PHPMailer/class.PHPMailer.php");
require \'PHPMailer/PHPMailerAutoload.php\';
在我的代码中,

get_template_part(\'PHPMailer/class.PHPMailer\');
get_template_part(\'PPHPMailer/PHPMailerAutoload\');
最后,我解决了这个问题,联系人表单开始工作。