У меня есть рабочая форма в WordPress, использующая ajax для передачи информации в php и wp_mail для отправки электронного письма.
Моя последняя проблема заключается в том, чтобы заставить nonce работать.
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 в functions.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;
}
С носом все работает нормально.
Может ли кто-нибудь понять, почему одноразовый номер не работает.
Я не могу поверить, что отправка электронной почты для WordPress была таким кошмаром.
Задача ещё не решена.
Других решений пока нет …