我正在尝试使用Ajax通过我创建的Web表单发送电子邮件,但我迷路了.我不知道Ajax如何在Wordpress中运行.
我首先创建了一个动作
add_action( 'wp_ajax_siteWideMessage', 'wpse_sendmail' );
应该检索数据并发送邮件的功能是:
function wpse_sendmail()
{
$for = like_escape($_POST['forwhat']);
$email = like_escape($_POST['email']);
$headers = 'From: '.$email ."\r\n".'Reply-To: '.$email;
$message = like_escape($_POST['message_message']);
$respond = like_escape($_POST['message_email']);
wp_mail( "support@ontrgt.net", "(OTN) Support: ".$support, $message, $headers);
}
最后,js是这样的:
$("#contact-send").click(function(){
var forwhat = $("#contact-for").val();
var name = $("#contact-name").val();
var email = $("#contact-email").val();
$.post( "<?php echo esc_js( site_url() ) ?>", { siteWideMessage:"null", forwhat: forwhat, name: name, email:email }, function(){
console.log("success");
});
});
我不太清楚我在这里缺少什么.有人可以帮我理解Wordpress的Ajax流程吗?
UPDATE
到目前为止,我更新了我的代码:
PHP
add_action( 'wp_ajax_siteWideMessage', 'wpse_sendmail' );
add_action( 'wp_ajax_nopriv_siteWideMessage', 'wpse_sendmail' );
function wpse_sendmail()
{
$for = $_POST['forwhat'];
$email = $_POST['email'];
$headers = 'From: '.$email ."\r\n".'Reply-To: '.$email;
$message = $_POST['message_message'];
$respond = $_POST['message_email'];
/*if(wp_mail( "support@ontrgt.net", "(OTN) Support: ".$for, $message, $headers))
{
echo "WOOHOO";
}*/
if($for)
{
//Just to see if there is any response.
echo "Whoohoo";
}
die();
}
JS
$("#contact-send").click(function(){
var forwhat = $("#contact-for").val();
var name = $("#contact-name").val();
var email = $("#contact-email").val();
var data = { action:'siteWideMessage', forwhat:forwhat, name:name, email:email };
$.post('<?php echo admin_url("admin-ajax.php"); ?>', data, function(response) {
alert(response);
});
});
WordPress仍然没有响应我的AJAX命令.我正在使用inspect元素,我看不到任何数据被传递.