在我的功能中。php文件我为template\\u重定向挂钩添加了一个自定义操作,该挂钩必须强制下载存储在服务器上的文件。当下载的代码位于Wordpress之外的一个简单PHP文件中时,它可以正常工作。但是,只要我在模板重定向挂钩中添加此代码,该功能就会被破坏。Chrome表示“无法访问该网站…ERR\\u INVALID\\u RESPONSE”。没有错误500或其他错误。。。
以下是下载代码:
<?php
$filename = $_SERVER[\'DOCUMENT_ROOT\'] . \'path-to-my-wordpress/wp-content/uploads/export/test.html\';
header( "Expires: 0" );
header( "Cache-Control: no-cache, no-store, must-revalidate" );
header( \'Cache-Control: pre-check=0, post-check=0, max-age=0\', false );
header( "Pragma: no-cache" );
header( "Content-type: text/html" );
header( "Content-Disposition:attachment; filename=\\"" . basename( $filename ) . "\\"" );
header( "Content-Type: application/force-download" );
readfile( "{$filename}" );
?>
以下是template\\u重定向挂钩:
add_action( \'template_redirect\', \'my_template_redirect\' );
function my_template_redirect() {
$filename = $_SERVER[\'DOCUMENT_ROOT\'] . \'path-to-my-wordpress/wp-content/uploads/export/test.html\';
header( "Expires: 0" );
header( "Cache-Control: no-cache, no-store, must-revalidate" );
header( \'Cache-Control: pre-check=0, post-check=0, max-age=0\', false );
header( "Pragma: no-cache" );
header( "Content-type: text/html" );
header( "Content-Disposition:attachment; filename=\\"" . basename( $filename ) . "\\"" );
header( "Content-Type: application/force-download" );
readfile( "{$filename}" );
exit();
}
有什么想法吗?
EDIT
在进行了一些测试之后,问题似乎来自我试图运行此下载的特定URL。事实上,我的代码是这样的:
add_action( \'template_redirect\', \'my_template_redirect\' );
function my_template_redirect() {
if ( preg_match( "/\\/wp-admin\\/export$/", $_SERVER[\'REQUEST_URI\'] ) ) {
$filename = $_SERVER[\'DOCUMENT_ROOT\'] . \'path-to-my-wordpress/wp-content/uploads/export/test.html\';
header( "Expires: 0" );
header( "Cache-Control: no-cache, no-store, must-revalidate" );
header( \'Cache-Control: pre-check=0, post-check=0, max-age=0\', false );
header( "Pragma: no-cache" );
header( "Content-type: text/html" );
header( "Content-Disposition:attachment; filename=\\"" . basename( $filename ) . "\\"" );
header( "Content-Type: application/force-download" );
readfile( "{$filename}" );
exit();
}
}
URL为/wp admin/export,这将启动文件下载。如果没有此URL条件,当我到达基本站点URL(=
http://mysite.dev/). 但随着情况的发展
http://mysite.dev/wp-admin/export, 它坏了。我也尝试过不使用wp admin前缀,但它也会中断。