带有jQuery POST的wp_mail脚本

时间:2011-05-31 作者:v3nt

我需要在提交表单时从页面发送电子邮件。

我想我会使用jQuery帖子,但我真的不知道从哪里开始。我会使用wp_mail()? 如果是这样的话,怎么能叫它呢?

抱歉,如果这看起来很模糊。在表单将其数据发布到另一个站点之前,尝试向客户发送电子邮件;

$(\'#donationForm\').submit(function() {

// send email to client before moving onto worldpay payment form


//  send data to worldpay....
this.submit();

});

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

基本上,您可以使用JavaScript发布到WordPress函数,然后WordPress函数可以调用wp_mail() 发送消息。

一个很好的起点是AJAX in Plugins 关于法典的文章。它将引导您完成在前端添加JavaScript、在后端添加PHP所需的所有步骤,以及将两者结合在一起所需的所有操作。

SO网友:Bainternet

首先添加电子邮件处理功能并将其挂接到wp_ajax 使用functions.php:

// if you want only logged in users to access this function use this hook
add_action(\'wp_ajax_mail_before_submit\', \'mycustomtheme_send_mail_before_submit\');

// if you want none logged in users to access this function use this hook
add_action(\'wp_ajax_nopriv_mail_before_submit\', \'mycustomtheme_send_mail_before_submit\');

// if you want both logged in and anonymous users to get the emails, use both hooks above

function mycustomtheme_send_mail_before_submit(){
    check_ajax_referer(\'my_email_ajax_nonce\');
    if ( isset($_POST[\'action\']) && $_POST[\'action\'] == "mail_before_submit" ){

    //send email  wp_mail( $to, $subject, $message, $headers, $attachments ); ex:
        wp_mail($_POST[\'toemail\'],\'this is the email subject line\',\'email message body\');
        echo \'email sent\';
        die();
    }
    echo \'error\';
    die();
}
然后在主题的js文件中创建如下AJAX调用:

jQuery(\'#donationForm\').submit(function() {

// send email to client before moving onto worldpay payment form
var data = {
    action: \'mail_before_submit\',
    toemail: $(\'#myemailfield\').val(), // change this to the email field on your form
    _ajax_nonce: $(\'#my_email_ajax_nonce\').data(\'nonce\'),
};
jQuery.post(window.location.origin + "/wp-admin/admin-ajax.php", data, function(response) {
    console.log(\'Got this from the server: \' + response);
});

});
现在将nonce添加到footer.php 由于需要通过PHP生成:

...
<span id="my_email_ajax_nonce" data-nonce="<?php echo wp_create_nonce( \'my_email_ajax_nonce\' ); ?>"></span>
<?php wp_footer(); ?>
...
你应该做好准备。

结束

相关推荐

AJAX Contact Form Issue

我为我的侧边栏创建了一个联系人表单,它在Chrome中工作得很好,但在IE或FF中却没有。我已经盯着它看了好几个小时了,没发现我做错了什么。我在任何地方都没有收到任何错误,但当我在FF或IE中提交它时,它会在控制台中记录“nope”,并在#jvmsg中回显一条-1的消息。我的html是:<li id=\"jvcontactwidget-3\" class=\"widget widget_contact\"> <div class=\"title\"><h2>