WordPress表单操作错误

时间:2018-08-04 11:21:10

标签: php wordpress forms

我已经用WordPress自定义编码表单,并且正在使用PHP处理提交。

我遵循了本教程Handling POST Requests the WordPress Way,但是在提交时,我会看到一个空白网页。

这是我的HTML代码:

<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
    <input type="hidden" name="action" value="newsletter_signup"/>
    <label for="newsletterEmail">Email:</label>
    <input type="email" name="newsletterEmail" required/>
    <button type="submit" name="newsletterSubmit" value="Submit">
</form>

这是我的PHP代码:

function m_newsletter_signup() {
    if (!empty($_POST)) {
        $newsletterEmail = $_POST['newsletterEmail'];

        $to = 'contact@example.com';
        $subject = 'Newsletter Signup';
        $body = "Email: $newsletterEmail";
        $from = 'Website';

        if ($_POST['newsletterSubmit']) {
            if (mail ($to, $subject, $body, $from)) {
                header("Location: https://example.com/site/newsletter-success/");
                exit();
            } else {
                header("Location: https://example.com/site/newsletter-error/");
                exit();
            }
        }
    }
}

add_action('admin_post_nopriv_newsletter_signup', 'm_newsletter_signup');
add_action('admin_post_newsletter_signup', 'm_newsletter_signup');

我的表单包含在“ inc”文件夹中的.php文件中,而我的PHP包含在functions.php中。

我尝试了以下方法:

  • 将wp-config.php中的WP_DEBUG设置为true(我得到零错误);和
  • 我创建了一个带有“ newsletter.php”文件的“ action”文件夹,并将表单上的action更改为/action/newsletter.php,但同样,我只是得到了一个空白网页(此方法有效在静态网站(没有WordPress的网站)上进行测试时很好。

此外,如果相关,以下是文件夹结构的简要概述:

theme
    action
        newsletter.php
    assets
    inc
        form.php
    functions.php

任何建议将不胜感激。

谢谢

马修

P.S。我不希望使用插件作为替代。

1 个答案:

答案 0 :(得分:0)

我设法在本文Build your own WordPress Contact Form中找到了解决我问题的方法。