試したことがないので、できるかどうかはわかりませんが、
Add a WordPress Custom Bulk Action
https://www.skyverge.com/blog/add-custom-bulk-action/
【PHP】めちゃ簡単!複数の画像ファイルをZIPでダウンロードさせる方法!
http://blog.shuffleee.com/2041/
この辺をうまい具合に組み合わせればいけそうな気がします。
トピック投稿者
吉田 丈治
(@geeorgey)
>Add a WordPress Custom Bulk Action
このページありがとうございます。どんなキーワードで検索すればよいか見当もつかなかったので助かりました。
ZIP圧縮部分は色々と情報が出てくるのですが、アクション部分が分かっておりませんでした。試してみたいと思います。
トピック投稿者
吉田 丈治
(@geeorgey)
解決しました
先ほど頂いたCustom Bulk Actionという記事から派生したプラグインが提供されており、まずはそちらをインストールしました。
https://ja.wordpress.org/plugins/custom-bulk-actions/
使い方はこちらにあります
https://github.com/Seravo/wp-custom-bulk-actions/
functions.phpに以下を記載しました。
//一括ダウンロードスクリプト
$bulk_actions = new Seravo_Custom_Bulk_Action(array('post_type' => 'ポストタイプを記入'));
//ACTION
$bulk_actions->register_bulk_action(array(
'menu_text'=>'一括ダウンロード',
'admin_notice'=>'ダウンロードが完了しました',
'callback' => function($post_ids) {
// Zipクラスロード
$zip = new ZipArchive();
// Zipファイル名→downloads_年月日.zip
$zipFileName = 'downloads_'. date("Ymd") . '.zip';
// Zipファイル一時保存ディレクトリ
$zipTmpDir = '/tmp/';
// Zipファイルオープン
$result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if ($result !== true) {
}
// ここでDB等から画像イメージ配列を取ってくる
$docPATHarray = array();
foreach ($post_ids as $post_id) {
$docURL = get_post_meta($post_id,'docURL',true);
// 添付ファイルのURLをfile_urlというカスタムフィールドに保存してありますので、URLをファイルパスに変換しています
$docPATH = str_replace("http://your.domain","/var/www/html/your.domain",$docURL);
$filename = basename($docPATH);
$zip->addFromString($filename,file_get_contents($filepath));
}
// 処理制限時間を外す
set_time_limit(0);
$zip->close();
// ストリームに出力
header('Content-Type: application/zip; name="' . $zipFileName . '"');
header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
header('Content-Length: '.filesize($zipTmpDir.$zipFileName));
echo file_get_contents($zipTmpDir.$zipFileName);
// 一時ファイルを削除しておく
unlink($zipTmpDir.$zipFileName);
exit("終了");
}));
//Finally init actions
$bulk_actions->init();
//一括ダウンロードスクリプトここまで
無事に添付ファイルの一括ダウンロードが出来ました。
アドバイスいただいたmocomocoさんありがとうございました!