2017-01-20 11 views
1

私はPDFファイルを生成するためにwordpressでmpdfを使用しています。私は毎週のレポートをユーザーに送信する機能に取り組んでいます。レポートは電子メールで送信し、pdfは電子メールで添付します。mpdf - functions.phpで週報PDFを生成

私の問題は、毎週このコードを実行するために、私はサーバー側のcronジョブを使用するつもりで、私の関数はfunctions.phpファイル内で実行する必要があるため、functions.phpファイルでコードを実行しているということです。

function weeklyReportFunc(){ 
    include('mpdf/mpdf.php'); 
    $mpdf = new mPDF(); 
    ob_start(); 
    require get_template_directory() . '/includes/report.php'; 
    $x = ob_get_contents(); 
    ob_end_clean(); 
    $mpdf->WriteHTML($x); 
    $today = date('Y-m-d'); 
    $pdfName = 'weekly-report-'.$today; 
    $mpdf->Output($pdfName.'.pdf', 'D'); 
} 

をそして、これはエラーの下に私を示しています:だから私はのfunctions.phpファイルにこのコードを追加

Warning: Cannot modify header information - headers already sent by (output started at 
/home/user/public_html/doms/wp-admin/includes/template.php:1995) in /home/user/public_html/ 
doms/wp-content/themes/mytheme/mpdf/mpdf.php on line 8314 

Warning: Cannot modify header information - headers already sent by (output started at 
/home/user/public_html/doms/wp-admin/includes/template.php:1995) in 
/home/user/public_html/doms/wp-content/themes/mytheme/mpdf/mpdf.php on line 1706 
mPDF error: Some data has already been output to browser, can't send PDF file 

どのように私はこの問題を解決することができますか?たぶん私はいくつかのアクションで私の機能を使用する必要がありますか?しかしどちら?どんなアイデアですか?

+0

チェック:/home/user/public_html/doms/wp-admin/includes/template.php:1995多くの場合、問題はPHPファイルの末尾にある空白です(これを防ぐためにPHPの終了タグを削除してください) –

+0

ワードプレスコアファイル。もし私がPHPの終了タグを削除したら、次回の更新で私はそれをやり直す必要があります。そして各wordpressのアップデートでも同じです。 @SanderBackus – aidadev

+0

私はその行(/home/user/public_html/doms/wp-admin/includes/template.php:1 995)にチェックして、奇数のスペース/終了タグはなく、最後の行でもないそのファイル。 PHPのクローズ/オープニングタグがありますが、そこに存在する必要があります。その他の提案はありますか? @SanderBackus – aidadev

答えて

1

。だから、自分のテーマフォルダにPHPファイルを作成し、ファイルの一番上にrequire('../../../wp-load.php');コードを追加すると、このファイルがWordPressのテンプレートページでなくても、すべてのWordPress関数を利用できるようになります。これですべての機能がこのファイルの中で利用できるようになりました。私はfunctions.phpファイルからこのファイルに自分のコードを移動しました。私はすでにこのファイルに対してcronジョブを実行しています。これが他の人を助けることを願っています。

+0

私はちょうどそれをやったが、それは働いたが、あなたは../../ ..よりもダイナミックリンクにする必要があります/もしそれが分散プラグインであれば 'require $ _SERVER ['DOCUMENT_ROOT']。 '/wp-load.php'; ' – PaulMrG

+0

もちろん、ありがとうございます@PaulMrG – aidadev

0

保存exec()を使用して$xからreport.php出力バッファ:最後に解決策た

function weeklyReportFunc(){ 
    ob_start(); 
    include('mpdf/mpdf.php'); 
    $mpdf = new mPDF(); 
    exec('php -f '.get_template_directory().'/includes/report.php',$output); 
    $x = $output[0]; 
    $mpdf->WriteHTML($x); 
    $today = date('Y-m-d'); 
    $pdfName = 'weekly-report-'.$today; 
    $mpdf->Output($pdfName.'.pdf', 'D'); 
} 
+0

全く助けてくれません。同じエラー@ShutUpMagda – aidadev

+0

MPDFクラスを呼び出す前に 'ob_start()'を使うようにしてください。 – ShutUpMagda

+0

私は試してみましたが、助けてくれません – aidadev

関連する問題