Допустим вы хотите использовать AJAX для обрабки данных введеных вашими пользователями. К примеру у вас форма фидбеков на сайте. И вы пишете плагин для этой простой цели. Юзер вписал фидбек, нажал кнопку отправить, текст передали плагину через AJAX, сохранили в базе, юзеру отписали. Всё это без перезагрузки страницы. Оказывается в WordPress уже есть всё необходимое.
Для начала в вашем плагине пишем обработчик AJAX запроса и регистрируем его:
1 2 3 4 5 6 7 8 |
function azzrael_ajax_post(){ $text = $_POST["text"]; // ... сохраняем в базу полученный контент, к примеру, die("Okey!"); } add_action( 'wp_ajax_nopriv_azzrael_ajax_post', 'azzrael_ajax_post' ); add_action( 'wp_ajax_azzrael_ajax_post', 'azzrael_ajax_post' ); |
Затем рисуем форму,для упрощения тут же пишем JS ( предполагаем, что jQuery включен ), предполагаем что это у нас всё в теле плагина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<form id="azzrael_ajax_form" action="" method="POST"></form><code><input name="text" type="text" /> <input type="submit" /> <script type="text/javascript">// <![CDATA[ var j = jQuery.noConflict(); j(document).ready(function(j) { j("#azzrael_ajax_form").submit(function(){ j.ajax({ type: 'POST', url: "<?= admin_url( 'admin-ajax.php' ) ?>", // !!! ЕСЛИ БУДЕТЕ ВЫНОСИТЬ JS В ОТДЕЛЬНЫЙ .js файл, то url нужно передать другим способом data: { action: 'azzrael_ajax_post' // Функция обработчик в плагине }, success:function(data, textStatus, XMLHttpRequest){ //alert("Success"); }, error: function(MLHttpRequest, textStatus, errorThrown){ //alert(errorThrown); } }); return false; }); // --- // ]]></script> |
Вот так всё не сложно. В который раз убеждаюсь — WordPress сила!
Art 2016-04-25