我正在开发一个 Wordpress 插件,并且正在尝试创建一个用于创建 Excel 导出的按钮。我一直在尝试为此找到理想的 Wordpress 方法,到目前为止我已经想出了这个。这是按钮:
<form method="post" action="">
<input type="submit" name="export_excel" value="Maak een Excel export" class="button-primary"/>
</form>
这是我连接到 admin_init 的函数。
add_action("admin_init", "export_excel");
function export_excel() {
if (isset($_POST['export_excel'])) {
try {
$filename = 'test.xlsx';
ob_clean();
header( 'Pragma: public' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Cache-Control: private', false );
header( 'Content-Type: application/vnd.ms-excel' );
header( 'Content-Disposition: attachment;filename=' . $filename );
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
ob_flush();
} catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
}
}
}
当我单击该按钮时,它会正确下载 Excel 文件,但之后它会发布整个 wp_admin php 纯文本,从而导致文件损坏。我假设 Wordpress 在某处这样做,但我无法找出如何。我将不胜感激任何帮助!
除此之外,我想知道为什么我的页面正在工作,而我添加到 admin_init 的函数缺少 exit 语句(为什么不推所有其他代码?)。当它确实包含退出语句时,我在加载任何管理页面时都会出现白屏。
谢谢!