Intereting Posts
Перенаправление с панели управления на edit.php, если wp_is_mobile () истинно Предстоящие События Показать полное изображение thumbnail Запрос на несколько таксономий, извлеченных из массива флажков $ _GET, не работает? Загрузите страницу в окне предварительного просмотра на панели? Изменить ссылки в комментариях пользователей Ошибка HTTP-сообщения WordPress при загрузке файла WordPress Multisite Installation Missing Tables Панель администратора CSS оставлена ​​после удаления Добавьте встроенный стиль на страницы, где использовался короткий код Поиск между настраиваемыми полями и полями пользовательской таксономии Как удалить категорию WordPress из URL-адреса и настроить пользовательский параметр / переписать? Изменить По умолчанию wp_mail From, без влияния на формы тяжести Загрузка нескольких изображений с помощью параметров темы Целевая кнопка woocommerce с классом после обновления ajax

wp_ajax_nopriv_xxx не работает на одном сайте, работает на всех остальных. -1 для зарегистрированных пользователей

мой плагин использует add_action для wp_ajax_cl_ajax и wp_ajax_nopriv_cl_ajax в своем коде и на нескольких тысячах сайтов, которые его используют, это нормально, но один сайт не работает для зарегистрированных пользователей

зарегистрированный пользователь в порядке, код отправляет запрос в ajax, и все возвращается в порядке.

в других блогах выведенный пользователь в порядке, но только в этом блоге -1 возвращается для запроса ajax.

Я добавил код отладки для плагина, чтобы умереть в функции do_ajax с сообщением, но он даже не доходит до этой функции.

вот действие для add_action('wp_ajax_nopriv_cl_ajax','do_ajax'); пользователя ajax add_action('wp_ajax_nopriv_cl_ajax','do_ajax');

функция имеет это

 function do_ajax(){ if(isset($_REQUEST['debug'])){ die('in ajax function'); } } 

Я просто изменяю URL-адрес ajax, чтобы иметь var для отладки (…. / wp-admin / admin-ajax.php? Debug = true) на моих тестовых сайтах он умирает, для зарегистрированного пользователя он умирает, но для журнала пользователь просто возвращает -1, который говорит мне, что действие даже не запускается. Я добавил больше кода отладки функции, которая добавляет действия для has_filter и возвращает 1, поэтому я знаю, что действие добавлено, просто не уволено.

Я попытался изменить тему, но радости там нет

сайт использует wp 3.2

есть ли у кого-нибудь опыт работы с wp_ajax_nopriv_xxx, не стреляющим? что вызвало это для вас?

как я уже сказал, он отлично работает в других блогах, поэтому я знаю, что это не опечатка или недостающий код.

что еще я могу сделать, чтобы определить, что заставляет действие не стрелять?

Я не думаю, что ваше действие wp_ajax_nopriv зарегистрировано неправильно. Это просто отклонено от admin-ajax.php . У меня была аналогичная ошибка с wp_ajax действий wp_ajax , который возвращал -1 для роли пользователя.

Проблема заключалась в том, что я ограничил доступ к admin_init администратора для этой группы пользователей на admin_init действия admin_init . Как вы можете видеть в admin-ajax.php этот крючок будет вызываться в первых нескольких строках, поэтому запрос был отклонен там.

Возможно, у вас есть аналогичная проблема или активированы некоторые модные плагины, которые будут мешать в какой-то момент кода.

Если вы не смогли воспроизвести ошибку, попробуйте пройти через файл admin-ajax.php и поэтапно замените все -1 возвращаемыми значениями своим собственным сообщением об ошибке. Это немного громоздко, но позволит вам найти причину.

Условие для такого крюка достаточно просто, как admin-ajax.php :

 if ( !empty( $_REQUEST['action'] ) ) do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ); 

Поэтому вероятными причинами являются:

  1. Вы скрипт не правильно передает имя действия (что маловероятно, если точно такой же код работает для входа в систему пользователя).
  2. Имя действия в WordPress перепутается с чем-то, и это как-то зависит от входа пользователя в систему.

Я бы попытался подключиться к admin_init и сбросить все $_REQUEST .