AJAX в WordPress. Часть 2.

Ajax Wordpress

Продолжение. Часть 1

Используем admin-ajax.php для обработки AJAX запросов

AJAX запросы следует направлять к wp-admin/admin-ajax.php. Слово admin в пути скорее всего немного смущает, но все AJAX запросы с фронт-енда и с админ-панели обрабатывать будет именно admin-ajax.php.

В файл plugin_dir_url( __FILE__ ).’js/ajax.js’ добавляем следующий код:

jQuery('#xxx').click(function(){
	// добавляем картинку с прелоадером или надпись загрузка
	jQuery('#loader').html('загрузка...');
	// сам ajax запрос
	jQuery.get(MyAjax.ajaxurl, {
		//передаем переменные
			action 	: 'test',
			ID 		: jQuery(this).attr('data-value-id')
		},function(data){
		// меняем прелоадер полученными данными
			jQuery('#loader').html(data);
		});
	return false;
});

В скрипте обязательно передаем параметр action — как идентификатор функции, которую необходимо вызвать.
Остальные параметры, на ваше усмотрение.

В functions.php добавляем следующее:

if(isset($_REQUEST['action']) ) {
	do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
	do_action( 'wp_ajax_' . $_POST['action'] );
};
 
//для неавторизованных пользователей
add_action( 'wp_ajax_nopriv_test', 'my_ajax_guest');
//для админа или пользователей с правами админа
add_action( 'wp_ajax_test', 'my_ajax_admin');
 
function my_ajax_guest() {
	$id = $_GET['ID'];
	echo 'Переменная равна - '.$id;
	// не забываем выйти
	exit;
}
 
function my_ajax_admin() {
	$id = $_GET['ID'];
	echo 'Для админа переменная равна - '.$id;
	// не забываем выйти
	exit;
}
Метки: ,
Автор: dimas