質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

935閲覧

wordpressで特定のカテゴリーページにパスワードを設けたい

uzr1709

総合スコア34

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/11/13 16:59

やりたい事
・wordpressで作成している、特定のカテゴリ(仮にAAA)にのみパスワードを設けたい。
・AAAのカテゴリーページに注意書きを載せたい。
・アクセスする毎にパスワードを要求するようにしたい。

現在はwebで調べたコードを元に以下のように記述しています。
function.php

PHP

1function basic_auth($auth_list,$realm="Restricted Area",$failed_text="認証に失敗しました"){ 2if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){ 3if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){ 4return $_SERVER['PHP_AUTH_USER']; 5} 6} 7header('WWW-Authenticate: Basic realm="'.$realm.'"'); 8header('HTTP/1.0 401 Unauthorized'); 9header('Content-type: text/html; charset='.mb_internal_encoding()); 10die($failed_text); 11} 12function password_form_cookie() { 13require_once ABSPATH . 'wp-includes/class-phpass.php'; 14$hasher = new PasswordHash( 8, true ); 15setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + MINUTE_IN_SECONDS, COOKIEPATH ); 16wp_safe_redirect( wp_get_referer() ); 17exit(); 18} 19add_action( 'login_form_postpass', 'password_form_cookie' );

header.php

PHP

1<?php 2if(!is_home()): 3 if(is_post_type_archive('AAA')) : 4 $userArray = array("testid" => "testpass" 5 ); 6 basic_auth($userArray); 7 endif; 8endif; 9?> 10コード

問題点
・カテゴリ「AAA」ページに遷移した際、1度はパスワード入力を求められましたが、その後はパスワードを求められない。
・カテゴリ「AAA」ページのリンクを押した際、
ブラウザに表示されている画面は遷移前の画面でポップアップでユーザー名とパスワードを求められる。
※正しく入力するとカテゴリ「AAA」ページが表示される

プラグインを使用する方法でもその他でも構いません。
以下の実装が出来る方法を探しております。
①カテゴリ「AAA」のリンクを押下した時、カテゴリ「AAA」のページを表示。
②カテゴリ「AAA」のページに誰でも見られる注意書きを表示。
③カテゴリ「AAA」の内容はパスワードで保護されている。
④正しいパスワードを入力した場合のみ「カテゴリAAA」の内容が表示される。
※idはあっても無くても構いません。
⑤一定時間経過、またはブラウザを閉じた後に再度カテゴリ「AAA」のページに遷移しようとした際にパスワードを要求する。

どうぞお知恵をお貸しください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/12/26 02:14

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
guest

回答1

0

ベストアンサー

###現在のコードの問題点

提示されたコードでは、設定または入力したパスワードがset_cookieによってクッキーに書き込まれているため一度入力してしまうとブラウザのクッキーを消去するまでパスワードは保存され、自動的にカテゴリの内容が表示されます。

パスワードはユーザーに決めさせるのか、サーバーが発行したものを使わせるのか、使用が明確に示されていません。

###解決の手順

なぜワードプレスでやりたいのか、
ワードプレスでなければならないことをしようとしているのか、
ポップアップにしたくないならheader関数ではなく、一度パスワード入力画面をHTML出力する。

パスワードの管理方法が示されていない。

どのようなサイト設計を考えられていらっしゃるのか、明確にしてください。

投稿2018/11/13 20:02

phpsyoshinsya

総合スコア156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uzr1709

2018/12/23 17:52

回答ありがとうございました。 パスワードページは一度見直す事にしました。 改めてパスワードページについて設計を考えてから質問させて頂きたいと思います。
phpsyoshinsya

2018/12/26 01:14

私も具体的かつ事例をコードの提示でお答えできなかったのは申し訳なく思っています。またパスワードのページも再検討をされるとのことで、一定の方向性が見いだせたのかと思っています。お互い来年もサイト作成に励みましょうね。
uzr1709

2019/01/16 08:15

設計について考え直す機会をくださったphpsyoshinsya様をベストアンサーにさせて頂きます。 こちらこそ要件がまとまっていない状態で質問をしてすみませんでした。 回答有難う御座いました。
phpsyoshinsya

2019/02/28 14:20

こんな回答でベストアンサーにしてもらえるなんて、思ってなかったですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問