2013-07-24 3 views
1

jquery $ .post() 함수를 사용하여 wordpress에 사용자 정의 연락처 양식을 작성하고 있습니다.

<?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; 
} 
?> 

나는 말한다 워드 프레스에서 오류 받고 있어요 : wp_mail() 함수를하지 정의를

$.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.'); 

      }) 

여기

bugreport.php 파일 (tmlp_dir 테마 디렉토리 경로입니다). 어떻게하면 내 PHP 파일이 wp_mail() 함수를 사용하게 할 수 있습니까?

감사합니다.

답변

2

워드 프레스 클래스를 얻으려면 워드 프레스 아약스 훅을 사용해야합니다.

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 파일을로드하려면 vars를 funct에 추가하십시오 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

감사합니다. '포함 (wp-load.php)'은 어떨까요? – aleXela

+1

@alexela, 그러지 마! 참조 : http://stackoverflow.com/q/13498959/1287812 – brasofilo

+0

ReferenceError : ajaxurl이 정의되지 않았습니다. 이 오류가 발생했습니다. – aleXela