2017-12-01 17 views
-2

私は私のプラグインのページビューからファイルをダウンロードするにはワードプレスに)(PHPヘッダを使用しようとしていますが、私のスクリプトに存在する各ヘッダ行のために、このエラー・メッセージ・リターンとして機能していません。カスタムプラグインのページからファイルをダウンロードするためにWordpressでPHPのヘッダ()を使用するには?

警告: D:\ xampp \ wordpress \ wp-content \ plugins \ pxw-test \ pxw-にあるヘッダー情報(ヘッダーは既にD:\ xampp \ wordpress \ wp-includes \ formatting.php:5100で開始されています) test.php on line 33

など、現在のヘッダー()の各行について。

<?php 
     /* 
      Plugin Name: Test Headers 
      Description: Download File Test Plugin for Headers Response errors. 
      Version:  1.0 
      Author:  Tester 
      Text Domain: pxw_test 
     */ 
     //Exit if accessed directly 
     if (! defined('ABSPATH')){ 
      exit; 
     } 
     //Admin Menu 
     function pxw_test_menu() { 
      //create custom top-level menu 
      add_menu_page( 
      'Dashboard',             
      'Test Headers',             
      'manage_options',           
      'pxw_test',            
      'pxw_test_dashboard_page', 
      null, 
      20               
      ); 
     } 
     //Function needed to display top-level page as the main page 
     function pxw_test_dashboard_page(){ 
      //Download 
      if(isset($_POST['download'])){ 
       //File To Download 
       $filename = 'file.txt'; 
       // http headers for Downloads 
       header("Pragma: public"); 
       header("Expires: 0"); 
       header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
       header("Content-Type: application/force-download"); 
       header("Content-Type: application/octet-stream"); 
       header("Content-Type: application/download"); 
       header("Content-Disposition: attachment; filename=$filename"); 
       header("Content-Transfer-Encoding: binary"); 
       header("Content-Length: ".filesize(plugin_dir_path(__FILE__).$filename)); 
       //You can try the following 
       // while (ob_get_level()) { 
       // ob_end_clean(); 
       // } 
       // @readfile(plugin_dir_path(__FILE__).$filename); 
      } 
     else{} 
    ?> 
     <form action="" method="POST" enctype="multipart/form-data" style="text-align:center;padding: 100px 0;"> 
      <button type="submit" onclick="this.form.submit();" style="background:red;padding:10px;color:#fff;cursor:pointer;"><b>Download File</b></button> 
      <input type="hidden" name="download" /> 
     </form> 
    <?php 
     } 
     //Finally Display the menu 
     add_action('admin_menu', 'pxw_test_menu'); 
    ?> 

私の目標があるにダウンロード:私のスクリプトで..

あなたは以下PXW-test.phpをファイルの内容を見て(プラグイン自体を)持つことができますファイルをダウンロード後に削除してください。もちろん

私がを捜しているわけではない:

function.php解決策は、私はプラグインを構築していて。

しかし、私のプラグインフォルダから短いものと管理しやすいものは歓迎されます。 のような:

  1. PHP

  2. javascriptの

  3. のjQuery

  4. のHTML5など なく、私は、このような削除などの操作を行う必要がありますよう<a download></a>ダウンロード後のファイル、ファイルがダウンロードされたかどうかを示します。

ご協力いただきありがとうございます。

+1

問題は、あなたが間違った場所でこれをやっていることです。 (コメントの '/ /メインページとしてトップレベルのページを表示するために必要な機能'それは既にそれを示しているはずです。これは全く異なる機能を詰め込む場所ではありません。)基本的には、ヘッダを生成してファイルをダウンロードするのに必要な出力を生成するWP応答生成プロセス。この回答によると、https://wordpress.stackexchange.com/a/3499 'template_redirect'はうまくいくはずです。 – CBroe

+0

@CBroe - 答えてくれてありがとう。template_redirectフックはどこに置くべきですか?私は試してみましたが、私のためにはうまくいきませんでしたので、上記のスクリプトに基づいてコード例を共有してください。あなたが言及したものを含むすべての関連記事を既にチェックしています。 – Francesco

答えて

関連する問題