WEB制作者向け無料テーマ「Arkhe」をリリースしました

WordPressでCSVファイルをダウンロードさせると「header already sent」エラーが発生するのを回避する方法

WordPressでCSVファイルにデータを吐き出してダウンロードさせる処理をさせたい場合、CSVのダウンロードを開始させるタイミングを調節してあげないと、「header already sent...」のエラーがでてしまう。

'init'アクションフックなどの、HTMLヘッダーが出力される前のタイミングにフックさせてあげるとエラーを回避できる。

例:'init'アクションフックでCSVファイルのダウンロードを実行させる

add_action('init', function(){

  /* ...CSVファイルの生成・準備など... */


  // ファイルタイプを指定
  header('Content-Type: application/octet-stream');

  // ファイルのダウンロード、リネームを指示
  header('Content-Disposition: attachment; filename="CSVファイル名"');

  // ファイルサイズを取得し、ダウンロードの進捗を表示
  header('Content-Length: '. filesize( $csv_path ) );

  // ファイルを読み込みダウンロードを実行
  readfile( $csv_path );

  // ダウンロードさせるためにサーバーにおいた一時ファイルの削除
  unlink( $csv_path );

  exit();
});

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

目次
WordPressテーマ SWELLWordPressテーマ SWELL