В WordPress с каждым обновлением на AJAX вешают все больше функционала. А знаете ли вы, что тоже можете пользоваться этими решениями в разработке тем и плагинов?
Чем объяснять, лучше покажу:
<?php
add_action('wp_footer', 'ajax__example', 99);
function ajax__example() {
?>
<script type="text/javascript" >
jQuery(document).ready(function() {
jQuery('#ajax__say_hello').click( function(e) {
e.preventDefault();
var data = { action : 'example' };
jQuery.post( <?php echo site_url();?>'/wp-admin/admin-ajax.php', data, function(response) {
if( response == "done" ) {
alert("Hello!");
}
else if( response == "empty" ) {
console.log("Sorry, we have some problems...")
}
});
});
});
</script>
<?php
}
/*
* wp_ajax_#CALLBACK# - это обработчик для АВТОРИЗОВАНЫХ пользователей
* wp_ajax_nopriv_#CALLBACK# - это обработчик для НЕ АВТОРИЗОВАНЫХ пользователей
* #CALLBACK# обязательно должен совпадать с передаваемым параметром ACTION!
*/
add_action('wp_ajax_example', 'example_callback');
add_action('wp_ajax_nopriv_example', 'example_callback');
function example_callback() {
if( $_POST["action"] == "example" )
echo "done";
else
echo "empty";
wp_die();
}
Нам нужно:
- Функция, которая будет выводить JS код;
- Функция, которая будет обрабатывать запросы для авторизованных пользователей;
- Функция, которая будет обрабатывать запросы от не авторизованных пользователей.
Последние две могут быть одной функцией.
Поле
action
обязательно должно быть и передаваться в обработчик!
Пишите на почту или в комментарии, если надо подробно прокомментировать какую-нибудь строчку.