Php 覆盖管理仪表板中的默认Wordpress行为,以使用CSV生成发送标题

Php 覆盖管理仪表板中的默认Wordpress行为,以使用CSV生成发送标题,php,wordpress,Php,Wordpress,我正在制作一个WP插件的原型,我发现很难在WP IOT创建PDF/电子表格等中生成文档和覆盖管理仪表板。我确信有一个技巧我不知道 如果有这样的最佳实践,我很想知道,因为我将采取的传统方法(与其他框架一起)似乎不起作用 我现在做的是生成一个菜单页面,带有一个子菜单页面。子菜单页面具有生成各种报告的链接。阅读完法典后,建议添加一个子页面菜单页,其中包含(所以它未列出,但可用) 代码如下所示: $this->plugin_screen_hook_suffix = add_submenu_page

我正在制作一个WP插件的原型,我发现很难在WP IOT创建PDF/电子表格等中生成文档和覆盖管理仪表板。我确信有一个技巧我不知道

如果有这样的最佳实践,我很想知道,因为我将采取的传统方法(与其他框架一起)似乎不起作用

我现在做的是生成一个菜单页面,带有一个子菜单页面。子菜单页面具有生成各种报告的链接。阅读完法典后,建议添加一个子页面菜单页,其中包含(所以它未列出,但可用)

代码如下所示:

$this->plugin_screen_hook_suffix = add_submenu_page(
            null,
            __( 'Session', $this->plugin_slug. '-reports' ),
            __( 'Session Report', $this->plugin_slug. '-reports' ),
            'manage_options',
            $this->plugin_slug . '-report-session',
            array( $this, 'display_plugin_session_report_page' )
        );

public function display_plugin_session_report_page() {
        header('Content-Description: File Transfer');
        header('Content-Type: text/csv');
        header('Content-Disposition: attachment; filename=report.csv;');
        header('Pragma: no-cache');
        header('Expires: 0');
//push out csv...
}

我处理WP的唯一方法是链接到外部页面,如report.php,并在其中调用该方法。还有其他方法吗?

以下是我使用的解决方案,它可以避免设置单独的脚本页面:

在URL中,我添加了以下内容:
&noheader=true
,然后在函数调用中,我使用清除输出缓冲区并生成自己的头。我找不到任何关于noheader设置的可靠文档,但发现它只适用于admin.php调用

我希望这能帮助其他开发者