ブラウザウィンドウで開かずにダウンロードするように、コンテンツのPDFへのリンクを追加するにはどうすればよいですか。 (私はPDFをメディアライブラリにアップロードしましたが、リンクを挿入することはできますが、ブラウザウィンドウで開かないようにするオプションを見つけることができません)。
ありがとう、
ルーシー
あなたの.htaccessにこれを追加しようとするかもしれません:
<FilesMatch "\.(?i:pdf)$">
# Force File Download
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>
実際、それは完全にブラウザに依存しています。一部のブラウザでは、PDFを内蔵の[PDFリーダーを使用して開きます(ほとんどの場合、Adobeプラグインを使用します。GoogleChromeには独自のプラグインがあります)。ただし、プラグインが見つからない場合、ブラウザは代わりにファイルをダウンロードしようとします。
最も安全な方法は、ユーザーが右クリックして[名前を付けて保存]を選択するようにページに指示を追加することです。
リンクをクリックしてもユーザーがページに戻れないことが心配な場合は、リンクにtarget="_blank"
を追加すると、ブラウザは新しいタブまたはウィンドウでそのリンクを開くように強制します。時々、これは代わりにダウンロードを引き起こすのに十分である場合もあります。
例:<a href="http://site.url/document.pdf" target="_blank">Download PDF</a>
。
PDFはmime-typeがapplication/pdf
で保存されるので、テーマにダウンロードを強制するapplication.phpまたはpdf.phpテンプレートファイルがある場合あなたのattachment.phpテンプレートでmime-typeをチェックするなら、あなたはダウンロードを強制することができます。
テーマの中でこのように構築されたpdf.phpファイルがうまくいくはずです:
<?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;
?>
(編集:これを機能させるためには、メディアアップローダを通してあなたの投稿にファイルを挿入するとき、あなたはFile URLではなくPost URLを選択しなければならないことに注意してください。投稿に挿入する前のLink URLフィールドファイル名へのリンクはブラウザの設定に従いますが、WP postリンクにリンクすることでその動作を制御できます。