WordPress ajax вызов для не вошедших в систему пользователей, не работает

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

Но когда я не вошел в систему, я получаю 302 в результате вызова ajax, у заголовков ответов есть место в нем, поэтому он пытается перенаправить, я не знаю почему. Я замечаю много сообщений по этой проблеме, но ни одна из сообщений / вопросов мне не помогла.

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

JQuery

$.ajax({ type: 'POST', url: MyAjax.ajaxurl, data: { action : 'myajax-submit', term : request.term, _ajax_nonce : MyAjax.ajax_nonce }, dataType: "json", beforeSend: function(jqXHR, settings){ }, success: function(data, textStatus, jqXHR){ response(data); }, error: function(jqXHR, textStatus, errorThrown){ response([{ 'value':'Error retriveing data', 'id':1 }]); }, complete: function(jqXHR, textStatus){ }, statusCode: { } }); 

PHP

 add_action('wp_ajax_myajax-submit', 'myajax_submit'); add_action('wp_ajax_nopriv_myajax-submit', 'myajax_submit'); function myajax_submit() { global $wpdb; //check_ajax_referer('myajax_nonce', '_ajax_nonce'); if (isset($_POST["term"])) { $q = strtolower($_POST["term"]); ..... $json_response = array(); ... header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-type: text/x-json"); print json_encode($json_response); die(); } } 

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

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

Запрос non-admin … все еще является запросом администратора

Внутри admin-ajax.php константа WP_ADMIN установлена ​​в TRUE . Поэтому, если вы включаете свои файлы, завернутые внутри, например if ( ! is_admin() ) , ваш запрос будет прерван в начале admin-ajax.php .