コーディングブログ

Coding Blog

WordPressで会員のみPDFを閲覧可能にする

PHP

WordPress

会員サイトを構築しても、限定コンテンツの画像やPDFなどのメディアファイルのURLに直接アクセスされたら見られてしまいますよね。
今回はPDFを会員にしか閲覧できないようにします。

    メディアディレクトリに.htaccessを設置してアクセスをブロック

    これで拡張子がpdfにアクセスができなくなります。

    しかし、メディアアップロードフォルダに上記.htaccessを設置してしまうと、
    会員コンテンツではないpdfも見ることができなくなって、困ります。

    特定の投稿タイプのみメディアアップロードディレクトリを変更する

    会員専用のカスタム投稿タイプのみアップロードディレクトリを作成して、そのディレクトリだけ.htaccessでブロックしてしまえば良いですね!

    こちらの記事で解説しています。
    特定の投稿タイプのみメディアアップロードディレクトリを変更する

    PHPでPDFを読み込む

    まず会員か判定するにはPHP(WordPress)を使うしかないです。
    ちなみに下記でWordPressでログイン状態を判定し処理を分岐できます。

    そして、PDFをPHPで読み込むにはreadfile()を使います。
    引数にファイルのパスを入れたらファイルを読み込みます。

    PHP: readfile – Manual

    PHPファイルを用意

    PDF読み込み用PHPのファイル名を仮に『pdf.php』とします。
    リンクを『pdf.php?title=【pdfのタイトル】&name=【pdfのファイル名】&type=【投稿タイプ名】』にしてアクセスすると会員のみPDFを閲覧することができます!
    ※会員限定投稿タイプが複数無い場合はtypeは不要です。

    $_GETでパラメーターを取得して、渡されたパラメーターに沿ったPDFをPHPで読み込みます。

    headerでfilenameを指定する理由

    PDFをダウンロードした時用のファイル名に関係があります。
    指定しないとデフォルトのものになってしまうのでちゃんと指定してあげると親切です。

    これにて、晴れて会員限定のPDFコンテンツを配信することができますね!