Aligatro
@Aligatro
Turn food and coffee into software...

Как передать данные в wordpress используя ajax?

Добрый день.
Помогите пожалуйста разобраться в коде или допилить его для wp. Началось все с попытки сделать простенький плагин для определения "наличия/отсутствия" adblock расширения у пользователя. По началу все шло хорошо, но спустя время (появился js и все испортил) возникла проблема при написании ajax функции передачи данных.
В общем, не буду попусту распинаться, просто скину фрагменты кода, из которых в принципе все и без слов понятно (да да, я новичок и ужасный быдлокодер).

// проверяем, не заблокирован ли скрипт с мнимой рекламой
 jQuery(document).ready(function($) {
// если блок не найден ставим по дефолту значение true
 if ($.adblockJsFile === undefined){
bar_blocked=true;
}

// начинаем пляски с бубном и пытаемся передать значение "bar_blocked" при помощи встроенного функционала wordpress (admin-ajax.php)  

jQuery.ajax({
			type: 'POST',
			data: bar_blocked,
			dataType: 'json',
			url: "/wp-admin/admin-ajax.php",
			success: function(data){
				alert(data);
			} 
		});	  	
                });


// создаем простенькую функцию для удобства
function ad_blockit() {
// пытаемся получить значения bar_blocked, но безуспешно
$blocker = $_POST['bar_blocked'];
if ($blocker == true)
return true;
}
// кидаем стандартные хуки для пользования ajax'ом
add_action("wp_ajax_ad_blockit", "ad_blockit");
add_action("wp_ajax_nopriv_ad_blockit", "ad_blockit");

В итоге, как бы я не изощрялся, ajax постоянно возвращает 0, а не true или false или хоть что-нибудь еще.

Всем заранее большое спасибо за вашу помощь.
  • Вопрос задан
  • 7196 просмотров
Решения вопроса 1
для начала
jQuery.ajax({
			type: 'POST',
			data: {
action: 'ad_blockit',
check: bar_blocked
},
			url: "/wp-admin/admin-ajax.php",
			success: function(data){
				alert(data);
			} 
		});


соответственно
$_POST['check']
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Aligatro
@Aligatro Автор вопроса
Turn food and coffee into software...
zelenin, спасибо за ваш ответ. Слава богу мне удалось решить проблему еще вчера. Кстати, немного не понятно почему, $_POST['check'] если передается bar_bloched, но в принципе не важно. На всякий случай выкладываю мой рабочий код.

// Подключаем Jquery и инициируем проверку на существования блока рекламы
 jQuery(document).ready(function($) {
 if ($.adblockJsFile === undefined){
// Если блок не найден присваиваем статус true
bar_blocked=true;
} else {
// Найден присваиваем статус true
bar_blocked=false;
}

// Запускаем ajax 
jQuery.ajax({
			type: "POST",
			data: {
// !Важно, указываем название функции php в которую необходимо передать данные
                action: 'ad_blockit',
                bar_blocked: bar_blocked,
			},
			dataType: "json",
			url: "/wp-admin/admin-ajax.php",
			success: function( response ) {
		alert( response );
	}
		});	  	
});


function ad_blockit() {
// Получаем данные
$blocker = $_POST['bar_blocked'];
echo $blocker;
// !Важно не забыть убить функцию.
die();
}
// !Важно не забыть повесить эти 2 хука. Дабы wp не отправил 0 или пустой ответ
add_action("wp_ajax_ad_blockit", "ad_blockit");
add_action("wp_ajax_nopriv_ad_blockit", "ad_blockit");
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы