插件激活时强制下载文件

时间:2017-07-02 作者:Dipak G.

我正在编写一个插件,希望在用户激活该插件时,强制用户立即下载一个文件。这是我迄今为止编写的代码,但它不起作用。

没有致命错误,但发出警告:“该插件在激活过程中生成了94个字符的意外输出。如果您注意到“headers ready sent”消息、联合提要问题或其他问题,请尝试停用或删除该插件。”

// Downloader
function dcg_file_downloader() {
    $file = ABSPATH . \'wp-content/uploads/sample.txt\';

    header(\'Content-Type: application/octet-stream\');
    header(\'Content-Disposition: attachment; filename=\'.basename($file));
    header(\'Expires: 0\');
    header(\'Cache-Control: must-revalidate\');
    header(\'Pragma: public\');
    header(\'Content-Length: \' . filesize($file));
    print $file;
}

// Plugin activation hook
function dcg_activate_plugin() {
    dcg_file_downloader();
    update_option(\'dcg_plugin_version\', \'1.0\');
}
register_activation_hook( __FILE__, \'dcg_activate_plugin\' );
实现这一点的目的是在对特定文件进行任何更改之前备份该文件(例如:.htaccess)

另外,使用ABSPATH获取WordPress安装目录/路径是一个好主意吗?

1 个回复
SO网友:Cesar Henrique Damascena

处理标头很棘手,因为您必须在发送任何输出之前调用它们,如Documentation. 因此,如果您在调用之前有任何空格,则可能是它。另一个问题可能是,如果您的任何代码导致了错误,错误消息将计为输出,因此它将触发headers already sent 如以下问题的答案所述:this 问题

结束

相关推荐

Activation Account Email

我使用betnami托管的wordpress多站点,当用户在该站点注册时,他应该会收到一封带有激活链接的电子邮件,但它不起作用!那么,如何让它发挥作用呢?如果可行,如何定制用户收到的电子邮件。顺致敬意,