Как же правильней осуществляется работа с AJAX в WordPress
AJAX — достаточно полезна и удобна в работе с html страницами. С помощью нее реально создавать понастоящему красивые визуальные приложения. Если проще, то с его помощью возможно создавать всевозможную передачу данных “без обновления страницы”: загрузку новых или дополнительных записей без обновления страницы, сохранение в базу комментариев WordPress без обновления страницы и т.д.
У WP создан свой достаточно удобный интерфейс при работе с AJAX. Нам требуется только написать функцию и обратиться к ней с помощью ajax.
Сделать это можно так:
add_action(‘wp_ajax_send’,’action_send’);
Где send — имя нашего хука, а action_send — имя функции, которую мы будем вызывать. В данном случае эта запись будет отработывать только при авторизованном пользователи, но если требуется использовать данную функцию для всех пользователей сайта то выглядит это вот так:
add_action(‘wp_ajax_send’, ‘action_send’);
add_action(‘wp_ajax_nopriv_send’,’action_send’);
Для использования самого AJAX запроса можно воспользоваться встроенной функцией в jQuery.
$.ajax({
url: «/wp-admin/admin-ajax.php», //url, к которому обращаемся
type: «POST»,
data: «action=send&text1=» + text1, //данные, которые будем передовать. Обязательно требуется задать для action название нашего хука
success: function(data){
//данные возвращаются в data
}
});
Не забывает обязательно казывать в url адрес как в примере выше и в поле data первым делом должны передавать переменную action где укажем имя функции которую подключаем
И сам пример
Добавим скрипт на страницу:
<script>
function add_cook(id) {
$.ajax({
url: «/wp-admin/admin-ajax.php»,
type: «POST»,
data: «action=send&ids=»+ids,
success: function(html){
$(div).html(html);
}
});
}
</script>
И добавим код в functions.php, который расположим по адресу wp-content/themes/<имя вашей темы>/functions.php:
<?
function send()
{
$ids = $_POST[‘ids’];
}
$mass = $ids;
$_SESSION[‘filt’] = $mass;
exit; //добавим чтобы в наш фильтр не было добавлено ниже функции
}add_action(‘wp_ajax_send’, ‘send’);
add_action(‘wp_ajax_nopriv_send’, ‘send’);
?>