如何在wordpress中发送电子邮件而不使用插件?

问题描述 投票:0回答:1

我用一个短码创建了一个反馈的插件。它不会发出错误,但它也不会向邮件发送任何东西.如何在没有插件的情况下向wordpress发送电子邮件?这是我的PHP代码。

<?php
/*
Plugin Name: myShortcodeForForms
Description: Plugin to create a feedback form using shortcode
Version: 1.0.0
Author: Author Name
*/
add_shortcode( 'addForm', 'add_forms' );
function add_forms() {
    return logic();
}

function logic() {

    ?>
    <form id="contact" method="get">
    <h3>Feedback form</h3>
        <div id="note"></div>
        <div id="fields">
            <p><input type="text" name="nameGet" id="author" placeholder="Name" required> <label for="author">Enter your name</label></p>
            <p><input type="email" name="emailGet" id="email" placeholder="E-mail" required> <label for="email">Email</label></p>
            <p><input type="text" name="subGet" id="url" placeholder="Subject" required> <label for="url">Message subject</label></p>
            <p><textarea name="messageGet" cols="1" rows="10" id="Text" placeholder="Enter the message text here" required></textarea></p>
            <p><button type="submit" id="submit" class="go">Send message</button></p>
        </div>
    </form>
    <?php

    if($_GET['nameGet'] != null && $_GET['emailGet'] != null && $_GET['subGet'] != null && $_GET['messageGet'] != null) {
        $headers = 'From: My Name <[email protected]>' . "\r\n";

        wp_mail('[email protected]', 'Hello', 'Hello world!', $headers);
    }
}
?>
php wordpress
1个回答
1
投票

你需要添加隐藏输入的动作 这样我们就可以触发更具体的钩子 与我们的联系表单提交相关的内容

你还需要在 <form> 标签

增加行动 钩子允许你为GET或POST请求创建自己的处理程序。

我想你的代码应该是这样的

<?php
/*
Plugin Name: myShortcodeForFormsx
Description: Plugin to create a feedback form using shortcode
Version: 1.0.0
Author: Author Name
*/
add_shortcode( 'addForm', 'add_forms' );
function add_forms() {
    return logic();
}

function logic() {
ob_start();
?>
    <form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
    <h3>Feedback form</h3>
        <div id="note"></div>
        <div id="fields">
            <p><input type="text" name="nameGet" id="author" placeholder="Name" required> <label for="author">Enter your name</label></p>
            <p><input type="email" name="emailGet" id="email" placeholder="E-mail" required> <label for="email">Email</label></p>
            <p><input type="text" name="subGet" id="url" placeholder="Subject" required> <label for="url">Message subject</label></p>
            <p><textarea name="messageGet" cols="1" rows="10" id="Text" placeholder="Enter the message text here" required></textarea></p>
            <input type="hidden" name="action" value="my_contact_form">
            <p><button type="submit" id="submit" class="go">Send message</button></p>
        </div>
    </form>
    <?php
return ob_get_clean();

}


function prefix_send_email_to_admin() {
  if($_POST['nameGet'] != null && $_POST['emailGet'] != null && $_POST['subGet'] != null && $_POST['messageGet'] != null) {
      $headers = 'From: My Name <[email protected]>' . "\r\n";
      wp_mail('[email protected]', 'Hello', 'Hello world!', $headers);
  }
}
add_action( 'admin_post_nopriv_my_contact_form', 'prefix_send_email_to_admin' );
add_action( 'admin_post_my_contact_form', 'prefix_send_email_to_admin' );

?>
© www.soinside.com 2019 - 2024. All rights reserved.