dip*_*rty 9 php csv arrays wordpress
我在我的插件页面中使用了一个简单的数组到CSV导出功能来生成报告.
当我运行此代码时,我收到一个错误,它将导出整个html内容以及我期望的数组.
这是我的代码:
function convert_to_csv($input_array, $output_file_name, $delimiter)
{
clearstatcache();
/** open raw memory as file, no need for temp files */
$temp_memory = fopen('php://memory', 'w');
/** loop through array */
foreach ($input_array as $line) {
/** default php csv handler **/
fputcsv($temp_memory, $line, $delimiter);
}
//echo '<pre>';
//print_r($temp_memory); exit;
/** rewrind the "file" with the csv lines **/
fseek($temp_memory, 0);
/** modify header to be downloadable csv file **/
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="' . $output_file_name . '";');
/** Send file to browser for download */
fpassthru($temp_memory);
}
/** Array to convert to csv */
$array_to_csv = Array(
Array(12566,
'Enmanuel',
'Corvo'
),
Array(56544,
'John',
'Doe'
),
Array(78550,
'Mark',
'Smith'
)
);
clearstatcache();
convert_to_csv($array_to_csv, 'report.csv', ',');
Run Code Online (Sandbox Code Playgroud)
我猜测在调用此函数后 WP 正在继续其正常操作,因此您将在 CSV 之后获得 HTML 模板输出。在之后添加一个exit声明fpassthru应该可以做到这一点,但是您需要小心,这不会弄乱 WordPress 在每个页面响应末尾执行的任何其他操作。例如,Drupal 就有一个drupal_exit()专门用于此目的的函数。我对 WP 不太熟悉,无法确定,但wp_die() 函数的文档表明您可以使用 PHP,exit而不会出现太多问题