2017-01-10 21 views
0

私は単純なAJAX対応の連絡フォームを作成しようとしていますが、ajax-admin.phpへPOSTするのは成功しません。万回(私はすでにそれらの一つ一つを読んで)ので、私と一緒に負担してください:ここではAJAXとwp_mail()でメールを送信

は私のJavascriptです:

submitMail (e) { 
     e.preventDefault(); 
     const data = { 
      action: 'mail_before_submit' 
     }; 
     const ajax = new Ajax({ 
      method: 'POST', 
      url: `${window.location.origin}/wp-admin/admin-ajax.php`, 
      data: JSON.stringify(data) 
     }); 
     ajax.on('success', (e) => { 
      console.log(e) 
     }); 
     ajax.send(); 
} 

そして、ここでは私のfunctions.phpでWordpressのフックです:

add_action('wp_ajax_nopriv_mail_before_submit', 'mail_before_submit'); 
add_action('wp_ajax_mail_before_submit', 'mail_before_submit'); 
function mail_before_submit() { 
    wp_mail('[email protected]', 'title text', 'body text'); 
    echo 'email sent'; 
    die(); 
} 

私は本当にわからない彼はWPフックがまったく呼び出されます。 JSでフォームを送信すると、コンソールで「XHRのロードが完了しました:POST "http://localhost:3000/wp-admin/admin-ajax.php"」というメッセージが表示されますが、何も起こりません - メールが送信されず、の回答は単純に0 ..

私はPHPに精通していませんが、大量の読書をした後、フックとコールバックを私のfunction.phpファイルに添付して、アクション属性のシリアル化されたJSONオブジェクトを送信しても成功しないで

あなたが見ることができるように、それは非常に簡単な例ですが、私は何時間も頭を悩まされています。どんな成功もありません。

+0

クエリパラメータにアクションを指定する必要があります。 '/wp-admin/admin-ajax.php?action = mail_before_submit'と同様です。 –

答えて

0

クエリパラメータにアクションを指定する必要があります。 /wp-admin/admin-ajax.php?action=mail_before_submitのようにします。

submitMail (e) { 
    e.preventDefault(); 
    const data = { 
    }; 
    const ajax = new Ajax({ 
     method: 'POST', 
     url: `${window.location.origin}/wp-admin/admin-ajax.php?action=mail_before_submit`, 
     data: JSON.stringify(data) 
    }); 
    ajax.on('success', (e) => { 
     console.log(e) 
    }); 
    ajax.send(); 
} 
+0

ありがとうございますが、残念ながらまだ仕事がありません。メールは届きません。 また、ブラウザに新しいクエリアドレスを入力すると、私は応答として** 0 **を受け取っています。私は自分のphp calbackで行っている "email sent"のinstedを返します。 –

+0

それはかなりですプログラムが電子メールを送信していないことを確認します。 – vico

+0

あなたのテーマはアクティブですか?それは私が今のところ持っている唯一の説明です。 –

関連する問題