包含BLOG-Header.php时强制pdf下载不工作

时间:2013-03-17 作者:BillyMedia

我有一个名为downloads/download的文件中的代码。php:

<?php
header(\'Content-type: application/octet-stream\');
header(\'Content-Disposition: attachment; filename="file.pdf"\');
readfile(\'file.pdf\');
?>
它会正确提示下载文件。pdf。

我需要跟踪下载,所以我想利用各种WP功能。为了将页面放入WP中,我添加了博客标题。php类似:

<?php
define(\'WP_USE_THEMES\', false);
require(\'../wp-blog-header.php\');
header(\'Content-type: application/octet-stream\');
header(\'Content-Disposition: attachment; filename="file.pdf"\');
readfile(\'file.pdf\');
?>
这将返回404。有人知道为什么将页面放入WP会导致这种情况吗?

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

我认为Wordpress对外部脚本的url有问题,并从handle_404() 中的函数wp 中的类/wp-includes/class-wp.php

您可以尝试使用例如status_header(200)

<?php
define(\'WP_USE_THEMES\', false);
require(\'../wp-blog-header.php\');
status_header(200);
header(\'Content-type: application/octet-stream\');
header(\'Content-Disposition: attachment; filename="file.pdf"\');
readfile(\'file.pdf\');
?>
查看Wordpress查询设置的源代码可以提供信息wp() 从文件中调用的wp-blog-header.php.

此函数在中定义/wp-includes/functions.php 看起来像这样

function wp( $query_vars = \'\' ) {
    ...cut...
    $wp->main( $query_vars );
    ...cut...
}
在哪里

 function main($query_args = \'\') {
    ...cut...
      $this->handle_404();
    ...cut...
}
以及

 function handle_404() {
    ...cut...
    // Guess it\'s time to 404.
    $wp_query->set_404();
    status_header( 404 );
    nocache_headers();
    ...cut...
}
来自wp 中的类/wp-includes/class-wp.php.

结束

相关推荐

如何“修复”wp-blog-header.php错误消息?

我最近更新了一个站点,并收到以下错误消息:致命错误:调用/home/atlmp/public\\u html/wp blog标头中未定义的函数wp()。php在线14我检查了文件,似乎没有任何问题,所以我不知道出了什么问题?<?php /** * Loads the WordPress environment and template. * * @package WordPress */ if ( !isset($wp_did_hea