Wordpress wp_mail ajax表单 - nonce不工作

时间:2014-10-19 11:39:13

标签: php ajax wordpress nonce

我在Wordpress中使用ajax将信息传递给php和wp_mail发送电子邮件。

我最后的问题是让现时工作。

js

    $atj(function(){
      $atj('#submit').click(function(e) {
        e.preventDefault();
        e.stopPropagation();
        if(verfiyTrainingFields()) {
            requestData = {
              'action' : 'ajax-submit',
              'dataType' : 'jsonp',
              'nonce' : 'TheAjax.NONCE',
              //
              'firstName' : $atj("#name").val(), 
              'email' : $atj("#email").val(), 
          }

          $atj.post(TheAjax.ajaxurl, requestData).done(function(result){        
            if(result == 'success') {
              $atj('.form [type=text]').val('');
              $atj('.form-message').append('<p class="form-complete-message">Thank you for your email</p>');
            }
          }, 'jsonp');
        }
      });
    })

php.php中的php

    function add_my_script() {
        wp_enqueue_script('scripts',get_template_directory_uri() . '/js/compiled/main.min.js', array('jquery'));
        //
        wp_localize_script( 'scripts', 'TheAjax', array( 
        'ajaxurl' => admin_url( 'admin-ajax.php' ), 
        'NONCE' => wp_create_nonce( 'ajax_custom_nonce' )
      ));
    }

    add_action( 'wp_ajax_nopriv_ajax-submit', 'ajax_submit' );
    add_action( 'wp_ajax_ajax-submit', 'ajax_submit' );

    function ajax_submit() {

        $nonce = $_POST['nonce'];

        if ( ! wp_verify_nonce( $nonce, 'ajax_custom_nonce' ) )
          die ( 'Busted!');

        header( "Content-Type: application/json" );

        $name = sanitize_text_field($_POST['name']);
        $email = sanitize_text_field($_POST['email']);

        $headers[] = 'From: ' . $name . ' <' . $email . '>' . "\r\n";
        $headers[] = 'Content-type: text/html' . "\r\n"; //Enables HTML ContentType. Remove it for Plain Text Messages

        $to = 'email address';

        $message = 'Name: ' . $name . "\r\n" . 'DID: ' . $dealershipId . "\r\n" . 'Phone: ' . $phone . "\r\n";

        wp_mail( $to, 'Email', $message );

        // generate the response
        $response = json_encode( array('success') );

        echo $response; 

        die;
    }

没有一切,一切正常。

可以看出nonce不起作用的原因。

我简直不敢相信发送电子邮件对于Wordpress来说就是噩梦。

0 个答案:

没有答案