实际上,我的建议是做一些不同的事情。您可以向WordPress添加自定义重写端点,以专门处理这些文件。
例如,URLhttp://site.com/download-xml/the_filename
将自动下载指定的文件作为附件。
首先,您需要添加一个自定义重写端点来进行设置:
function add_endpoint() {
add_rewrite_endpoint( \'download-xml\', EP_ALL );
}
add_action( \'init\', \'add_endpoint\' );
这还方便地添加了一个查询变量,以便我们可以检查该端点是否在标准模板重定向期间使用。
function download_redirect() {
global $wp_query;
// If this isn\'t the right kind of request, bail.
if ( ! isset( $wp_query->query_vars[\'download-xml\'] ) || empty( $wp_query->query_vars[\'download-xml\'] ) )
return;
// Download the file.
exit();
}
add_action( \'template_redirect\', \'download_redirect\' );
在上面的函数中,您可以执行下载文件所需的任何操作。从加载
/wp-content/uploads
目录作为流,设置文件头(内容配置设置为“附件”),根据数据库中的内容动态生成内容,无论您想要什么。
只要确保exit()
最后调用,否则WordPress将尝试执行其常规模板重定向调用,稍后您将收到一些丑陋的“headers ready sent”错误。