Comment puis-je ajouter un lien vers un PDF dans le contenu, afin qu'il soit téléchargé plutôt que ouvert dans les fenêtres du navigateur? (J'ai téléchargé le PDF dans la médiathèque et je peux insérer le lien mais je ne trouve pas d'option pour empêcher son ouverture dans la fenêtre du navigateur.).
Merci,
Lucy
vous pouvez essayer d’ajouter ceci à votre .htaccess:
<FilesMatch "\.(?i:pdf)$">
# Force File Download
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
En fait, cela dépend entièrement du navigateur. Certains navigateurs ouvriront un PDF dans la fenêtre à l'aide d'un lecteur intégré PDF (la plupart utilisent le plug-in Adobe, Google Chrome étant le sien). Si le plug-in est manquant, le navigateur tentera à la place de télécharger le fichier.
Votre pari le plus sûr est d'ajouter des instructions sur la page pour que l'utilisateur clique avec le bouton droit de la souris et sélectionne "Enregistrer sous".
Si vous craignez que les utilisateurs ne puissent pas revenir à la page après avoir cliqué sur un lien, ajoutez target="_blank"
au lien, ce qui obligera le navigateur à ouvrir le lien dans un nouvel onglet ou une nouvelle fenêtre. Parfois, cela peut également suffire à déclencher un téléchargement.
Par exemple: <a href="http://site.url/document.pdf" target="_blank">Download PDF</a>
.
Un PDF sera enregistré avec le type mime de application/pdf
. Ainsi, si votre thème a un fichier de modèle application.php ou pdf.php qui force le téléchargement (ou Si vous recherchez le type mime dans votre modèle attachment.php, vous pouvez forcer le téléchargement.
Un fichier pdf.php construit de la sorte dans votre thème devrait faire l'affaire:
<?php if (have_posts()) : while (have_posts()) : the_post();
$pdf_title = $post->post_title;
$uploads_dir = wp_upload_dir();
$attachment_src = get_post_meta( $post->ID, '_wp_attached_file', true );
$pdf_src = path_join( $uploads_dir['path'], $attachment_src );
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=\"".$pdf_title."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($pdf_src));
ob_clean();
flush();
readfile("$pdf_src");
endwhile; endif;
?>
(Édition: je dois noter que pour que cela fonctionne, lorsque vous insérez le fichier dans votre message via l'éditeur de média, vous devez sélectionner URL du message plutôt que URL du fichier dans le champ URL du lien avant de l'insérer dans votre message. Un lien vers un nom de fichier suivra les préférences du navigateur, mais en vous connectant au lien WP, vous pouvez contrôler son comportement.)