Array-to-CSV-export功能在WordPress-plugin中面临一个问题

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)

jam*_*art 0

我猜测在调用此函数后 WP 正在继续其正常操作,因此您将在 CSV 之后获得 HTML 模板输出。在之后添加一个exit声明fpassthru应该可以做到这一点,但是您需要小心,这不会弄乱 WordPress 在每个页面响应末尾执行的任何其他操作。例如,Drupal 就有一个drupal_exit()专门用于此目的的函数。我对 WP 不太熟悉,无法确定,但wp_die() 函数的文档表明您可以使用 PHP,exit而不会出现太多问题