ワードプレスで会員制のサイトを作成しましたが、PDFはログインしていなくても見れる状態のままでした。
今回はログインしていないと、PDFの閲覧ができない様にしていきます。
目次
.htaccessでアクセスを制御
まずはpdfが入っているフォルダに以下の.htaccessUPして、アクセスを拒否するようにします。
<Files ~ "\.(pdf)$"> deny from all </Files>
PDFのリンクをphpファイルに差替え
各ページに違うPDFが配置されており、PDFファイルは以下の様にカスタムフィールドを利用し指定していました。
echo "<a href=\"https://sample.com/pdf/".(get_field("pdf")." \">".get_the_title( '' )."PDFを表示する</a>");
これを以下の様に書き換えます。
echo "<a href=\"https://sample.com/pdf.php?no=".(get_field("pdf")." \">".get_the_title( '' )."PDFを表示する</a>");
そして、pdf.phpとファイルに以下を記載することでPDFが表示されるようになります。
<?php
require ($_SERVER['DOCUMENT_ROOT'] . '/CMS/wp-load.php');
$pdf = htmlspecialchars($_GET['no'], ENT_QUOTES, 'UTF-8');
if (is_user_logged_in()){
header("Content-Type: application/pdf");
readfile($_SERVER['DOCUMENT_ROOT'].'/pdf/'.$pdf);
exit();
}
?>


質問などあればお気軽に!