WordPressでPDFダウンロード機能を実装する(パスワード付き)


今回はWordpressでPDFダウンロード機能を実装していきたいと思います。(マニアックな内容です)

【手順1】カスタムフィールドでbasic_auth(真偽)を追加。

管理画面よりカスタムフィールドプラグイン等を使用し、basic_authという名前で真偽項目を作成して下さい。

※真偽項目とはtrue / falseで値を返せるものです。

【手順2】single-attachment.phpというファイルを作成

テーマ内にsingle-attachment.phpを新規作成して下さい。

下記コードをコピペ

single-attachment.php

<?php if(have_posts()): the_post(); ?>


<?php // Basic認証(パスワード付きにチェックが入っていた場合) ?>
<?php if(get_field('basic_auth') == true): ?>
  <?php basic_auth(array("user" => "半角英数で任意のパスワードを入力")); ?>
<?php endif; ?>

<?php // ファイルを開く ?>
<?php
$filepath = $post->guid;
header("Content-Type: application/force-download");
header("Content-disposition: attachment; filename=\"".basename($filepath)."\"");
readfile($filepath);
exit();
?>


<?php endif; ?>


<?php 
// Basic認証
function basic_auth($auth_list,$realm="Restricted Area",$failed_text="認証に失敗しました"){
  if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){
    if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){
      return $_SERVER['PHP_AUTH_USER'];
    }
  }
  
  header('WWW-Authenticate: Basic realm="'.$realm.'"');
  header('HTTP/1.0 401 Unauthorized');
  header('Content-type: text/html; charset='.mb_internal_encoding());
  
  echo $failed_text;
  echo '<br><a href="' . esc_url( home_url() ) . '">トップページへ ≫</a>';
  die();  
}
?>

 

記事を読んで頂いている読者の方へ

いつも多くのいいね・シェア・ツイートを頂きありがとうございます。
無料での情報発信において、1人1人の応援が私たちのモチベーションに繋がっています。


明日から使える!
3ステップでつくるデジタルマーケティング戦略シート

ステップ1~3のテンプレートに入力するだけで、貴社のマーケティング戦略に役立つ「デジタルマーケティング戦略シート」が完成します。

無料ダウンロードページへ
  • 関連記事
  • おすすめ記事
PAGE TOP