会員しかPDFをダウンロードできないようにする

Wordpress
スポンサーリンク

ワードプレスで会員生のサイトを作成しましたが、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();
}

?>