前提・実現したいこと
Wordpress の記事ページ(カスタム投稿)で、カスタムフィールドよりアップしたファイルにチェックボックスをつけて、選択されているファイルのみZIPファイルにしてダウンロードさせるようなページを作ています。
以下のサイトを参考にしているのですがうまくいきません…
https://arts-factory.net/zip/
発生している問題・エラーメッセージ
チェックボックスを複数選択してダウンロードボタンを押すと、ページがリロードされたような感じになってページ下部が表示されない。
もちろんZIPファイルもダウンロードできてない。
該当のソースコード
php
1<form class="memberSingle__form" method="post" action=""> 2 <ul class="memberSingle__list"> 3 <?php 4 $fields = $cfs->get('upload'); //親ループ 5 foreach ($fields as $field) : 6 ?> 7 <li class="memberSingle__item"> 8 <label class="memberSingle__inner"> 9 <span class="memberSingle__checkbox"> 10 <input class="memberSingle__checkbox--checkbox" type="checkbox" name="file[]" value="<?php echo $field['upload_data']; ?>"> 11 </span> 12 </label> 13 <a class="memberSingle__link" href="<?php echo $field['upload_data']; ?>" download> 14 <span class="memberSingle__img"></span> 15 <span class="memberSingle__title"> 16 <?php if($field['upload_title']): ?> 17 <?php echo $field['upload_title']; ?> 18 <?php else: ?> 19 <?php echo preg_replace( '/^.*//u', '', $field['upload_data']); ?> 20 <?php endif; ?> 21 </span> 22 <span class="btn01 memberSingle__btn">ダウンロード</span> 23 </a> 24 </li> 25 <?php endforeach; wp_reset_postdata(); ?> 26 </ul> 27 <div class="memberSingle__zipArchive"> 28 <?php var_dump(); ?> 29 <?php if(CFS()->get('upload_archive')): ?> 30 <a class="btn01 memberSingle__zipArchive--btn" href="<?php echo CFS()->get('upload_archive'); ?>" download>全てのファイルをダウンロード</a> 31 <?php endif; ?> 32 <div class="btn01 memberSingle__zipArchive--btn"> 33 <input class="memberSingle__zipArchive--submit" type="submit" value="チェックしたファイルをダウンロード"> 34 </div> 35 </div> 36 </form> 37 <?php echo('<pre>');var_dump($pathAry);echo('</pre>'); ?> 38 <?php 39 if (!empty($_POST["file"])){ 40 // ダウンロードさせたいファイル 41 $pdf= $_POST['file']; 42 $pathAry = array(); 43 for($i=0; $i<sizeof($pdf); $i++){ 44 $pathAry[] = $pdf[$i]; 45 } 46 47 // zipのインスタンス作成 48 $objzip = new zipArchive($pathAry); 49 50 // 一時ファイル(zip)の名前とPath 51 $zipName = "file_" . date("Ymds") .'.zip'; 52 $zipPath = get_stylesheet_directory_uri() . '/tmp/' . $zipName; 53 54 // 一時ファイル(zipファイル)を作成 55 $result = $objzip->open($zipPath, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE); 56 if ($result !== true) { 57 echo "err - open zip-file"; 58 exit; 59 } 60 61 set_time_limit(0); 62 63 // zipに追加 64 foreach ($pathAry as $filepath) { 65 $filename = basename($filepath); 66 $objzip->addFromString($filename, file_get_contents($filepath)); 67 } 68 $objzip->close(); 69 70 // 出力(ダウンロード) 71 header('Content-Type: application/zip; name="' . $zipName . '"'); 72 header('Content-Disposition: attachment; filename="' . $zipName . '"'); 73 header('Content-Length: '.filesize($zipPath)); 74 echo file_get_contents($zipPath); 75 76 // 一時ファイル(zipファイル)の削除 77 unlink($zipPath); 78 exit(); 79 80 } else { 81 header("Location:" . home_url() . "/member/"); 82 } 83 ?>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。