Привет!
Пытаюсь перепилить плагин для Wordpress. Помогите, кто чем может, пожалуйста :)
Берутся данные JavaScript-ом из бэкенда и отдаются в PHP, который создаёт на сервере файл. Задача отдать его пользователю в браузер. Старый скрипт отдавал его без проблем download.php:
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename='$name;');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($name));
if (ob_get_contents()) ob_end_clean();
flush();
readfile($name);
Но wordpress попросил запретить прямой доступ, ок :
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
Соответственно вызов AJAX повешенный на success стал открывать пустое окно:
$.ajax (
{
type: "POST",
url: myAyax.ajax_urls.write_url ,//Здесь вызывается подключенная через хук на admin-ajax.php функция
data: {
ids:arr, // Это данные
action: 'write_file_server', //Передаем хук. который пишет файл с данными на сервер.
},
success: function(result){
window.location = myAyax.ajax_urls.download_url //Здесь был линк на прямой вызов download.php (см. выше)
})
}
});
Пытался вызвать, в функции вызываемой через хук:
include('download.php');
Вызывается, отдает в буфер содержимое и код 200, но не качается ;)
Линк в succes-е на файл открывает его содержимое, и тоже не качается, естественно :)
Можно ли на succses как-то повесить вызов download.php, не GET-ом?
Помогите идей, пожалуйста.
UPD: Спасибо откликнувшимся, разобрался сам :)
Повесил ещё один хук на непустой GET запрос, и прописал его в success :
window.location = window.location.href+'&filename=filer.file';