Ich habe ein Formular, in dem Benutzer Dateien auswählen und ein Zip-Archiv der ausgewählten erstellen können. Bis auf die Tatsache, dass die ZIP-Datei im Ordner wp-admin erstellt wurde, funktioniert alles wie erwartet. Stattdessen möchte ich, dass es in einem temporären Ordner gespeichert und sofort nach dem Herunterladen gelöscht wird.Ergebnis von WordPress AJAX Call Manifesting in wp-Admin-Ordner
ist die PHP-Code für die Erstellung des Archivs Zip:
// Creates zip file
function bcg_zip_download() {
$files = $_POST['checked'];
$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
$full = wp_upload_dir();
$base = $full['baseurl'] .'/';
if (is_array($files)){
foreach ($files as $file) {
$path = $file;
if(file_exists($_SERVER['DOCUMENT_ROOT'].'/bcg/wp-content/uploads/'.$path)){
$zip->addFromString(basename($base . $path), file_get_contents($base . $path));
}
else {
echo"file does not exist";
}
}
}
$zip_file_path = $zip_name;
$zip->close();
echo admin_url(). '/' . $zip_name;
unlink($zip);
wp_die();
}
add_action('wp_ajax_nopriv_download_folder', 'bcg_zip_download');
add_action('wp_ajax_download_folder', 'bcg_zip_download');
Vielen Dank dafür. Leider wird dies nicht funktionieren, da die Datei tatsächlich im Ordner wp-admin erstellt wird. Ich möchte, dass es sich in einem tmp-Ordner befindet. –