你做错了什么,可以用下面这句话来解释:
哪个动作属性指向插件文件夹中的文件(download.csv.php),不应该显示,只需提示csv转储的文件下载对话框即可。
此代码:
$core = $_POST[\'download\'].\'wp-load.php\';
if(isset($_POST[\'download\']) && is_file($core)){
require_once( $core );
基本上,你要做的是a)跳出WordPress环境,直接访问插件的某些部分,b)然后尝试从该文件中加载WordPress环境(我可能会补充说,这是以一种极其不安全的方式进行的)。
与其这样做,不如一开始就呆在WordPress环境中,并按照您希望的方式覆盖输出。
更好的方法是留在admin中,钩住admin\\u init,检测何时需要获取CSV输出并返回该输出。
因此,对于您的表单,请执行以下操作:
<form method="post" id="download_form" action="">
<input type="submit" name="download_csv" class="button-primary" value="<?php _e(\'Download the log (.csv)\', $this->localizationDomain); ?>" />
</form>
请注意,此处未使用任何操作。这意味着它将提交回您的同一管理页面,没有任何更改。现在,您可以在连接到admin\\u init action hook的任何函数中检测到,如下所示:
global $plugin_page;
if ( isset($_POST[\'download_csv\']) && $plugin_page == \'whatever\' ) {
echo "HELLO"; die;
}
$plugin\\u page global将设置为页面=普通插件设置屏幕中的任何内容。不要像我在这里那样重复“HELLO”,而是在插件中调用一个函数来正确生成和输出CSV、标题和所有内容,然后消亡。或者类似的东西。
请注意,这过于简单,可能不安全。您可能还想在此处执行nonce和功能检查,以确保允许用户下载此CSV并打算这样做。