Создаю zip при переходе на страницу:
$zip = new ZipArchive();
$file = CO2_PATH . '/pdf/zip/certificates.zip';
if ($zip->open($file, ZipArchive::CREATE) === true) {
foreach ($order_items as $item) {
$file_pdf = get_template_directory() . "/certificate/product-{item->ID}.pdf";
if (file_exists($file_pdf )) {
$zip->addFile($file_pdf );
}
}
$zip->close();
}
if (isset($_POST['download'])) {
if (file_exists($file)) {
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Length: ' . filesize($file));
flush();
readfile($file);
unlink($file);
}
}
Ниже html:
<form action="" method="POST">
<button type="submit" name="download" class="button button-thank-page quiz_result_btn">Download certificate</button>
</form>
<a href="<?php echo CO2_URL . '/pdf/zip/certificates.zip'; ?>" class="button button-thank-page quiz_result_btn"><span>Download certificate</span>
И вот если скачивать через форму POST тогда скачивается с ошибками, прилагаю скрин с блокнота здорового и больного архива. В больном выводится html, вот в этом причина наверное.
А если скачивать через ссылку, тогда нужно повторно перезагрузиться страницу почему-то. Предпочтительно найти ответ как сделать через POST форму.