代码在核心PHP中工作正常,但在WordPress中编写代码

时间:2020-10-15 作者:Mr_Ussi

function generate_pdf($array)
{
    header(\'Content-Type: text/csv\');
header(\'Content-Disposition: attachment; filename="sample.csv"\');

$fp = fopen(\'php://output\', \'wb\');
foreach ( $array as $line ) {
    $val = explode(",", $line);
    fputcsv($fp, $val);
}
fclose($fp);
}

$array = array(
    \'aaa,bbb,ccc,dddd\',
    \'123,456,789\',
    \'"aaa","bbb"\'
);

generate_pdf($array);
这是我生成正确csv文件的代码,但当我在自定义插件中实现它时,它会生成编码。csv文件

1 个回复
SO网友:Tony Djukic

当我尝试做类似的事情时,我遇到了同样的问题,即生成CSV的页面的HTML代码将包含在CSV中,并与我实际需要的数据混合在一起。

在搜索和阅读以及阅读和搜索之后,我发现了两件事ob_end_clean(); 在我开始输出CSV的内容之前。ob_end_clean() 是“输出缓冲区结束/清理”https://www.php.net/manual/en/function.ob-end-clean.php

我还补充道die() 在CSV输出代码的末尾,退出进程。您还可以使用exit().

function generate_pdf( $array ) {
    ob_end_clean(); //ADD THIS LINE
    header( \'Content-Type: text/csv\' );
    header(\'Content-Disposition: attachment; filename="sample.csv"\');

    $fp = fopen( \'php://output\', \'wb\' );
    foreach( $array as $line ) {
        $val = explode( \',\', $line );
        fputcsv( $fp, $val );
    }
    fclose( $fp );
    die(); //add this as well
}

相关推荐

如何在Pluggable.php中使用我的插件文件中的函数

我正在创建一个插件,需要使用get\\u user\\u by()和wp\\u check\\u password()以及wordpress pluggable中提供的一些很酷的函数。但是它总是抛出一个未定义的函数错误。但是如果我像这样直接在插件文件中包含该文件include (ABSPATH . \'wp_includes/pluggable.php\') 我将能够在我的插件中使用这些函数,但我读到直接包含这些文件并不好,所以我想知道最好的方法来避免冲突。我也尝试过创建这样的函数add_act