php - Wordpress 自定义联系表不起作用

标签 php html css wordpress

我正在尝试为我的 Wordpress 主题创建自定义联系表单页面。但是,在我完成代码的过程中,页面上的错误消息不会显示。

此外,我在本地主机上运行以测试此自定义页面,它似乎不会将我的消息发送到在我的 Wordpress 安装中设置的 ADMIN EMAIL。

这是我的 WP Custom Contact Form 上的片段:

<?php 
    /* Template Name: Contact Page */
?>


<?php 

    // Function for email address validation
    function isEmail($verify_email) {

        return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$verify_email));

    }

    $error_name = false;
    $error_email = false;
    $error_subject = false;
    $error_message = false;


    if (isset($_POST['submit'])) {
        // Initialize the variables
        $contact_name = '';
        $contact_email = '';
        $contact_subject = '';
        $contact_message = '';


        // Get the name
        if (trim($_POST['contact_name']) === '') {
            $error_name = true;
        } else {
            $name = trim($_POST['contact_name']);
        }

        // Get the email
        if (trim($_POST['contact_email']) === '' || !isEmail($_POST['contact_email'])) {
            $error_email = true;
        } else {
            $email = trim($_POST['contact_email']);
        }


        // Check if we have errors
        if (!$error_name && !$error_email && !$error_subject && !$error_message) {
            // Get the receiver email from the WP admin panel
            $receiver_email = get_option('admin_email');

            $subject = "Message from $contact_name";
            $body = "You have a new quote request from $contact_name. Project details:" . PHP_EOL . PHP_EOL;
            $body .= PHP_EOL . PHP_EOL;

            $headers = "From: $contact_email" . PHP_EOL;
            $headers .= "Reply-To: $contact_email" . PHP_EOL;
            $headers .= "MIME-Version: 1.0" . PHP_EOL;
            $headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
            $headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

            // If all is good, we send the email
            if (mail($receiver_email, $subject, $body, $headers)) {
                $email_sent = true;
            } else {
                $email_sent_error = true;
            }
        }
    }

?>



<?php  get_header(); ?>

<!-- BLOG AREA -->
<section>
        <hr class="no-margin" />

        <div class="blog-container section-content">
            <div class="container">
                <div class="row">
            <div class="col-md-8">
                <div class="box-layer custom-padding">


                    <div class="align-center">
                        <h2>We want to hear from you!</h2>
                        <p>If you are seeking to contact us, please fill up the form below. If you want to advertise or be partner with us just inform us on the message box below. </p>
                      <p>Thank you so much for your support!
                      <br/>We really appreciate!</p>




                <?php if (isset($email_sent) && $email_sent == true) : ?>

                    <h2>Success!</h2>
                    <p>You have successfully sent the quote request. I'll get back to you as soon as possible.</p>

                <?php elseif (isset($email_sent_error) && $email_sent_error == true) : ?>

                    <h2>There was an error!</h2>
                    <p>Unfortunately, there was an error while trying to send the email. Please try again.</p>

                <?php else : ?>



                        <form action="<?php the_permalink(); ?>" method="POST" class="general-form" novalidate>
                            <p <?php if ($error_name) echo 'class="error"'; ?>><input name="contact_name" id="contact_name" class="form-control" placeholder="Your Name.." type="text" value="<?php if (isset($_POST['contact_name'])) echo $_POST['contact_name']; ?>" /></p>
                            <p <?php if ($error_email) echo 'class="error"'; ?>><input name="contact_email" id="contact_email" class="form-control" placeholder="Your Email.." type="email" value="<?php if (isset($_POST['contact_email'])) echo $_POST['contact_email']; ?>" /></p>
                            <p <?php if ($error_subject) echo 'class="error"'; ?>><input name="contact_subject" id="contact_subject" class="form-control" placeholder="Your Subject.." type="text" value="<?php if (isset($_POST['contact_subject'])) echo $_POST['contact_subject']; ?>"/></p>
                            <p <?php if ($error_message) echo 'class="error"'; ?>><textarea  name="contact_message"  id="contact_message" class="form-control" placeholder="Write your comment here.." rows="4" cols="100"><?php if (isset($_POST['contact_message'])) echo $_POST['contact_message']; ?></textarea></p>
                            <input class="btn btn-primary no-border" name="submit" type="submit" id="submit" value="Send Message">
                        </form>
                            <?php endif; ?>


                    </div>


                </div>


<!-- RELATED ARTICLE AREA -->



                </div>




                    <aside>
            <!-- SIDEBAR AREA -->
                            <div class="col-md-3 col-md-offset-1 margin-sidebar">
                            <?php get_sidebar(); ?>
                            </div> 
                    </aside>


</section>



<?php  get_footer(); ?>

有什么想法吗?或者如果您看到一些错误,有没有办法可以更正我的代码?

最佳答案

让你开始

  1. 确保在您的 wp-config.php 文件中将 WP_DEBUG 设置为 true。
  2. 您可以从 mail() 获取最后的错误(已回答 here)
  3. 如果可用,请使用 wordpress 的功能,在本例中为 wp_mail随时为您服务。
  4. 有 wordpress 插件,例如 gravity forms 或 contact form 7 可以完成任务。
  5. 使用过滤器和操作。

不得不发布作为答案,还不能发表评论。

HTH

关于php - Wordpress 自定义联系表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749585/

相关文章:

php - 实时ajax评论

css - 如何将 svg 合并到 React 组件中?

java - 使用jsoup从 "a"inside "span"inside "class"提取属性用于体育软件

css - Vuetify 容器最大宽度固定

javascript - 如何在刷新页面后保留最后一个JQuery DIV位置?

html - DIV css 背景图像不会在 IE 8 中显示

php - 如何防止 PHP 将具有 0000-00-00 值的 DateTime 对象转换为 -0001-11-30

php - WordPress 主题定制器 - 无法添加部分/设置

php - 如何防止 PHP 中的 SQL 注入(inject)?

javascript - 无法制作双向按钮(在第一次单击时在第二次单击时禁用问题使启用)