質問: "cd ". $compressDir .";". "zip -r ". $zipFileSavePath . $fileName .".zip ."; // Linuxコマンドの実行 exec($command); //圧縮したファイルをダウンロードさせる。 header('Pragma: public'); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=".$fileName.".zip"); readfile($zipFileSavePath.$fileName.".zip"); } add_action( 'wp_ajax_backup_data_setting', 'backup_data_setting' ); ``` ※jsは実際はボタンをクリックして上記のjsを実行するようにしてあります。 ※管理画面向けのもののため、ログインしている状態からの動作です。
回答: Ajaxは非同期で通信し、結果を `.done(function(data) {})` で受け取るため、受け取ったバイナリを再度ダウンロードできる形に変換する必要があります。 【バイナリファイルをAjaxで取得する際に注意する点 - Qiita】 ダウンロードさせるのが目的であれば、それのためのURLを作ったほうが早いと思います。 【Rewrite APIその2 WordPressでアプリを作る基本(WordPressプラグイン開発のバイブルのボツ原稿から) – Shinichi Nishikawa's】