我已经用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中。
我尝试了以下方法:
此外,如果相关,以下是文件夹结构的简要概述:
theme
action
newsletter.php
assets
inc
form.php
functions.php
任何建议将不胜感激。
谢谢
马修
P.S。我不希望使用插件作为替代。