hookの中にスクリプトを入れるとうまく呼び出せない
-
https://ja.forums.wordpress.org/topic/156984?replies=4
ここにあるような事をfunctions.phpにベタ書きして処理していたのですが、どうにも不格好だなと思い、以下のようにhookに含めました。
function FileDL(){ //研究費の一括ダウンロードスクリプトDefine bulk actions for custom-post-type customPostType $bulk_actions = new Seravo_Custom_Bulk_Action(array('post_type' => 'customPostType')); //ACTION $bulk_actions->register_bulk_action(array( 'menu_text'=>'ファイル一括ダウンロード', 'admin_notice'=>'ダウンロードが完了しました', 'callback' => function($post_ids) { // Zipクラスロード $zip = new ZipArchive(); // Zipファイル名 $zipFileName = 'customPostType'. date("Ymd") . '.zip'; // Zipファイル一時保存ディレクトリ $zipTmpDir = '/tmp/'; // Zipファイルオープン $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE); // ファイルをZipに突っ込む処理 foreach ($post_ids as $post_id) { $docURL = get_post_meta($post_id,'docURL',true); //docURLはファイルのURLが入ったカスタムフィールドです if(empty($docURL)){}else{ $docPATH = str_replace("https://mydomain.com","/var/www/html/mydomain",$docURL); //内部パスに変換 $filename = basename($docPATH); $zip->addFromString($filename,file_get_contents($docPATH)); } } // 処理制限時間を外す set_time_limit(0); $zip->close(); // ストリームに出力 mb_output_handler("pass"); mb_http_output("pass"); header('Content-Type: application/zip; name="' . $zipFileName . '"'); header('Content-Disposition: attachment; filename="' . $zipFileName . '"'); ob_end_clean(); $handle = fopen($zipTmpDir.$zipFileName, 'rb'); while (!feof($handle)) { echo fread($handle, 1024*4); ob_flush(); flush(); } fclose($handle); // 一時ファイルを削除しておく #unlink($zipTmpDir.$zipFileName); exit("終了"); })); //Finally init actions $bulk_actions->init(); } add_action('admin_head-edit.php', 'FileDL' );hookによって、customPostTypeページのバルクアクション部分に、ここで定義した「ファイル一括ダウンロード」が表示されていることは確認しておりますが、一括処理のボタンを押してもファイルのダウンロードが始まりません。
/tmp/以下に一時ファイルも出来ないので、そもそもzipにファイル投入が成されていないようです。$post_idsがうまく渡っていないのかなと思い、function FileDL($post_ids)としてみたのですが動かずでした。
どのあたりがまずいのでしょうか。
4件の返信を表示中 - 1 - 4件目 (全4件中)
4件の返信を表示中 - 1 - 4件目 (全4件中)
トピック「hookの中にスクリプトを入れるとうまく呼び出せない」には新たに返信することはできません。