Форма обратной связи. Пример на основе использования плагина AJAX Simply
<?php
/*
Plugin Name: Simple Ajax Form
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: 1.0
Author: campusboy
Author https://wp-plus.ru
License: MIT
*/
add_shortcode( 'sif-form', 'sif_callback' );
function sif_callback() {
?>
<form class="my_form">
<input type="text" name="user-name" placeholder="Введите имя">
<input type="email" name="user-email" placeholder="Введите почту">
<input type="submit">
<div class="responce"></div>
</form>
<?php
add_action( 'wp_footer', 'sif_style' );
add_action( 'wp_footer', 'sif_script', PHP_INT_MAX );
}
function sif_script() {
?>
<script>
jQuery('.my_form').submit(function (event) {
event.preventDefault();
var $form = jQuery(this);
var $respBox = $form.find('.responce');
$respBox.hide(300).attr('css', '');
var result = ajaxs('sif_callback', $form);
result.done(function (r) {
if (r.success) {
$respBox.css('color', 'green').text('Сообщение успешно отправленно!');
} else {
$respBox.css('color', 'red').text('Заполните все поля, пожалуйста.');
}
});
result.always(function () {
$respBox.show(300);
});
});
</script>
<?php
}
function sif_style() {
?>
<style>
.my_form input {
margin-bottom: 10px;
}
</style>
<?php
}
/**
* @param \AJAX_Simply_Core $jx
*/
function ajaxs_sif_callback( $jx ) {
if ( $jx->{'user-name'} && $jx->{'user-email'} ) {
$to = get_bloginfo( 'admin_email' );
$subject = 'Обратная связь';
$message = 'Клиент: ' . $jx->{'user-name'} . 'Почта: ' . $jx->{'user-email'};
$status = wp_mail( $to, $subject, $message );
$jx->success( $status );
}
$jx->error( [
'name' => $jx->{'user-name'} ? true : false,
'email' => $jx->{'user-email'} ? true : false,
] );
}