Force le téléchargement de pdf ne fonctionne pas quand on inclut blog-header.php

2

J'ai ce code qui fonctionne dans un fichier nommé downloads / download.php:

<?php
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="file.pdf"');
readfile('file.pdf');
?>

Il invite correctement à télécharger le fichier fichier.pdf.

Je dois suivre les téléchargements, donc je veux utiliser diverses fonctions de WP. Pour amener la page à l'intérieur de WP, j'ai ajouté blog-header.php comme suit:

<?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');
?>

Ceci retourne un 404. Quelqu'un sait-il pourquoi le fait d'introduire la page dans WP causerait cela?

    
posée BillyMedia 18.03.2013 - 00:50

1 réponse

2

Je pense que Wordpress a un problème avec l'URL de votre script externe et génère une erreur 404 de la fonction handle_404() dans la classe wp dans /wp-includes/class-wp.php

Vous pouvez essayer de surmonter cela en utilisant par exemple 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');
?>

ps:

Il est intéressant de consulter le source de la configuration de la requête Wordpress wp() appelée à partir du fichier wp-blog-header.php .

Cette fonction est définie dans /wp-includes/functions.php et ressemble à ceci

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

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

et

 function handle_404() {
    ...cut...
    // Guess it's time to 404.
    $wp_query->set_404();
    status_header( 404 );
    nocache_headers();
    ...cut...
}

provient de la classe wp dans /wp-includes/class-wp.php .

    
réponse donnée birgire 18.03.2013 - 03:33

Lire d'autres questions sur les étiquettes