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

  • このエントリーをはてなブックマークに追加
  • LINEで送る

今回は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();
}
?>

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*