Как с помощью вордпресса отправить данные с моей формы на почту?
в плагинах я как понял нельзя использовать свою вёрстку, а предлагают создать новую форму.
Ответы (1 шт):
Автор решения: Darth KYL
→ Ссылка
пример реализации кастомной формы с отправкой через ajax. Само собой функционал для примера и не для того чтоб его использовать на сайте нужно доработать валидацию, но в данном случае вопрос не о защите.
html часть
<form id="custom-form">
<?php wp_nonce_field('name_of_action','name_of_field'); ?>
<input type="submit" value="send">
</form>
php часть. подробнее о функции wp_mail() можно прочитать по этой ссылке wp_mail()
add_action('wp_ajax_custom_form_send', 'send_form_data');
add_action('wp_ajax_nopriv_custom_form_send', 'send_form_data');
function send_form_data(){
if ( ! isset($_POST['name_of_field']) || ! wp_verify_nonce( $_POST['name_of_field'], 'name_of_action') ){
wp_send_json_error();
}
$to = '[email protected]';
$subject = 'Tема письма';
$body = 'Данные из формы или любой другой контент';
$headers = ['Content-Type: text/html; charset=UTF-8'];
if ( wp_mail( $to, $subject, $body, $headers ) ) {
wp_send_json_success();
} else {
wp_send_json_error();
}
}
js часть
jQuery( function( $ ) {
let sendForm = {
init(){
this.events();
},
events(){
$('form#custom-form').on('submit', this.sendForm.bind( this ) );
},
sendForm( e ){
e.preventDefault();
$.ajax( {
url: '/wp-admin/admin-ajax.php', // url лучше брать из json
method: 'POST',
data: {
action: 'custom_form_send',
nonce: $( e.target ).find('[name="name_of_field"]').val(),
}
} ).success( function( response ) {
if ( response.success ) {
console.log('success');
} else {
console.log('error');
}
} );
}
};
sendForm.init();
} );