wordpress — генерирует еженедельный отчет pdf с mpdf — functions.Stack Overflow

Я использую mpdf на WordPress для создания файлов PDF. Я работаю над функцией, которая будет отправлять еженедельный отчет моим пользователям, и этот отчет должен быть отправлен по электронной почте, а PDF будет прикреплен по электронной почте.

Моя проблема в том, что я запускаю код в файле functions.php, потому что для запуска этого кода каждую неделю я собираюсь использовать серверное задание 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');
}

И это показывает мне ошибку ниже:

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

Как я могу решить это? Может быть, мне нужно использовать мою функцию в каком-то действии? но какой? Есть идеи, пожалуйста?

1

Решение

Наконец-то нашел решение. Поэтому я создал файл php в папке с темой и в самом верху файла добавил require('../../../wp-load.php'); код, который делает все функции WordPress доступными внутри него, даже если этот файл не является страницей шаблона WordPress. Так как теперь все функции доступны внутри этого файла, я переместил свой код из файла functions.php в этот файл, и я уже запускаю задание cron для этого файла. Надеюсь, это поможет кому-то еще.

1

Другие решения

Сохранить report.php выходной буфер в $x с помощью exec():

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector