PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-如何正确使WordPress插件返回可下载的excel文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试为我的wordpress插件提供一些报告.此报告必须可以作为excel下载.基本上我所做的就是创建一个按钮,当按下该按钮时,我将查询数据库并从结果中获得卓越的表现.

现在,我需要修改标题以将结果作为excel文件返回.这是我的方法

header('Content-Disposition: attachment; filename='.$filename.'.xls');
header('Content-type: application/force-download');
header('Content-transfer-encoding: binary');
header('Pragma: public');
print "\xEF\xBB\xBF"; // UTF-8 BOM

问题是它返回以下错误

Warning: CAnnot modify header information - headers already sent by (output started at .....\wp-admin\menu-header.PHP:137) 

为此,我可能需要ob_start(),但这不是必须将ob_start()放在第一个标头(来自wordpress的核心文件)之前.如果可能的话,我不希望修改核心文件.

还是wordpress自己的钩子“ send_headers”?但我无法使其正常工作,但仍会产生相同的错误.

那么,我需要解决什么问题呢?是否有另一种方法可以从wordpress插件生成Excel文件

任何帮助表示赞赏!

解决方法:

您发送标题太晚了,因为header()已经在menu-header.PHP中发送了.从提供的代码中,我看不到您正在发送标头的位置,但是在plugins_loaded操作中将是一个不错的选择,因为在所有插件均已加载且发送任何输出之前,将调用该操作挂钩.

下载链接如下所示:

<a href="<?PHP echo admin_url( '?download' ); ?>">download</a>

并且,plugins_loaded操作:

add_action( 'plugins_loaded', function() {
    if ( isset( $_GET['download'] ) ) {
        // here you can create .xls file

        header('Content-Disposition: attachment; filename='.$filename.'.xls');
        header('Content-type: application/force-download');
        header('Content-transfer-encoding: binary');
        header('Pragma: public');
        die();      
    }
});

大佬总结

以上是大佬教程为你收集整理的php-如何正确使WordPress插件返回可下载的excel文件全部内容,希望文章能够帮你解决php-如何正确使WordPress插件返回可下载的excel文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: