我正在使用jquery $ .post()函数在wordpress上构建自定义联系表单。
$.post(tmpl_dir + '/bugreport.php',{ name:name, email:email, message:message }, function(data) {
if ( data ) alert( 'thanks for answer' )
else alert('error sending, please try again.');
})
(tmlp_dir是主题目录路径)
这是bugreport.php文件:
<?php
if ( isset($_POST['name']) && isset($_POST['email']) &&isset($_POST['message']) ) {
$name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message'];
$send_to = "mail@mail.com";
$subject = "Question from " . $name;
$success = wp_mail($send_to,$subject,$message);
if ($succsess) return true
else return false;
}
?>
我从wordpress收到一个错误:wp_mail()函数没有定义。 我如何让我的php文件使用wp_mail()函数?
感谢。
答案 0 :(得分:2)
你应该使用wordpress ajax hook来获得wordpress类。
http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)
我建议稍微清理代码并添加Nonce检查,但您的代码应如下所示:
JS:
jQuery.post(
MyAjax.ajaxurl,
{
'action': 'send_message',
'name':'name',
'email':'email',
'message':'message'
},
function(response){
alert('The server responded: ' + response);
}
);
PHP:
add_action( 'wp_ajax_send_message', 'do_send_message' );
function do_send_message() {
if ( isset($_POST['name']) && isset($_POST['email']) &&isset($_POST['message']) ) {
$name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message'];
$send_to = "mail@mail.com";
$subject = "Question from " . $name;
$success = wp_mail($send_to,$subject,$message);
if ($succsess) return true
else return false;
}
}
要加载你的js文件,vars将它添加到functions.php或你的插件。
$myvars = array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
);
wp_enqueue_script( 'my-ajax-request', plugins_url( '/path/to/somefile.js', __FILE__ ) );
wp_localize_script( 'my-ajax-request', 'MyAjax', $myvars );