禁止从使用ADD_SUBMENU_PAGE添加的页面输出管理员图形用户界面

时间:2013-01-17 作者:greatwitenorth

我已经使用add\\u submenu\\u页面为我的插件创建了一个下载链接。单击链接时,它会将一些文件收集到zip中,然后将内容输出到浏览器,如下所示:

header(\'Content-Type: application/zip\');
header(\'Content-Length: \' . filesize($file));
header(\'Content-Disposition: attachment; filename="file.zip"\');
readfile($file);
unlink($file);
问题是wordpress默认情况下会将所有内容包装在其管理主题中。我是否可以设置一个标志或什么东西来告诉wordpress,对于这个特定的页面,我不希望它退出管理界面?

编辑:以下是我用来生成子菜单页的代码:

  add_action(\'admin_menu\', array($this, \'add_download_page\'));

  function add_download_page() {
    add_submenu_page( 
        \'options.php?post_type=spn_newsletter\'
      , \'Download Newsletter\' 
      , \'Download Newsletter\'
      , \'manage_options\'
      , \'spn_download\'
      , array($this, \'do_download\')
    );
  }

1 个回复
最合适的回答,由SO网友:Milo 整理而成

我认为您必须挂接一个较早的操作,并检查您的子页面是否正在加载,当呈现子页面的函数发生时,发送标题为时已晚。子页面的呈现函数可能为空,因为前面的操作会覆盖它。我试过用一个子页themes.php 这似乎是可行的:

function wpa82041_do_download(){
    global $pagenow;
    if( \'themes.php\' == $pagenow
    && \'spn_download\' == $_GET[\'page\'] ){
        // do your download stuff
    }
}

add_action( \'admin_init\', \'wpa82041_do_download\' );

结束