Загрузка интерфейса WordPress не работает для вышедших пользователей

Я использую приведенный ниже код для загрузки файлов в WordPress из формы внешнего интерфейса и получения их метаданных, которые используются для заполнения полей и т. Д.

var formData = new FormData();
formData.append("action", "upload-attachment");
var fileInputElement = document.getElementById("entryfile");
formData.append("async-upload", fileInputElement.files[0]);
formData.append("name", fileInputElement.files[0].name);
formData.append("_wpnonce", upload_nonce);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function(){
if (xhr.readyState==4 && xhr.status==200){
console.log(xhr.responseText);
}
}
xhr.open("POST","wp-admin/async-upload.php",true);
xhr.send(formData);

Однако этот код работает только для вошедших в систему пользователей. Если посетитель не вошел в систему, консоль регистрирует перенаправление, которое выглядит следующим образом:

wp-login.php?redirect_to=http:// ...

Почему это не работает? Есть ли обходной путь для этого?

** ОБНОВИТЬ: **
В итоге я использовал formData для загрузки файла. Однако я не могу справиться с этим после этого момента. Вот код, который я использую в своем обработчике php ajax:

if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
echo json_encode("upload error : " . $_FILES[$file]['error']);
exit;
}
$attach_id = media_handle_upload( $file, 0 );
}
}

Я всегда получаю ошибку. Либо, что файл пуст (хотя массив $ _FILES содержит данные файла), или просто пустая ошибка … Помогите пожалуйста ….

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]