2013-07-24 60 views
1

我使用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 = "[email protected]"; 
    $subject = "Question from " . $name; 
    $success = wp_mail($send_to,$subject,$message); 
      if ($succsess) return true 
      else return false; 
} 
?> 

我收到來自WordPress的一個錯誤,指出:wp_mail()函數沒有定義。 我怎麼讓我的PHP文件使用wp_mail()函數?

謝謝。

回答

2

你應該使用wordpress ajax鉤子來獲得wordpress類。

http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)

我建議清理一下代碼,並添加一個隨機數檢查,但你的代碼看起來應該是這樣的:

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 = "[email protected]"; 
    $subject = "Question from " . $name; 
    $success = wp_mail($send_to,$subject,$message); 
      if ($succsess) return true 
      else return false; 
    } 

} 

加載你的js文件和變量添加到函數ions.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); 
+0

謝謝,那麼'include(wp-load.php)'怎麼樣? – aleXela

+1

@alexela,不要這樣做!請參閱:http://stackoverflow.com/q/13498959/1287812 – brasofilo

+0

ReferenceError:未定義ajaxurl。得到這個錯誤。 – aleXela