2017-01-20 1 views
1

PDF 파일 생성을 위해 wordpress에서 mpdf를 사용하고 있습니다. 저는 주간 보고서를 내 사용자에게 보내고 그 보고서는 전자 메일로 보내야하며 pdf는 전자 메일에 첨부되는 기능을 개발하고 있습니다.주간 보고서 생성 mpdf - functions.php와 함께 pdf

내 문제는 매주이 코드를 실행하기 위해 매주 나는이 코드를 실행하기 위해 서버 사이드 크론 작업을 사용할 것이고 나의 기능은 functions.php 파일 안에 있어야 실행하기 때문에 function.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'); 
} 

을 그리고 이것은 오류가 아래로 나를 보여줍니다

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 

가 어떻게이 문제를 해결할 수 있습니까? 어쩌면 내가 어떤 일에 내 기능을 사용해야 할까? 하지만 어느 것이지? 어떤 아이디어라도 제발? exec()를 사용 $x

+0

확인 : /home/user/public_html/doms/wp-admin/includes/template.php:1995 종종 문제는 PHP 파일의 끝에있는 공백입니다 (이를 막기 위해 PHP 닫기 태그를 제거하십시오) –

+0

하지만 wordpress core file. PHP 닫는 태그를 제거하면 다음 업데이 트에서 다시해야합니다. 그리고 각 wordpress update에서도 마찬가지입니다. @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

저장 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

관련 문제