質問: new PasswordHash( 8, true ); setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + MINUTE_IN_SECONDS, COOKIEPATH ); wp_safe_redirect( wp_get_referer() ); exit(); } add_action( 'login_form_postpass', 'password_form_cookie' ); ``` header.php ``` "testpass" ); basic_auth($userArray); endif; endif; ?> コード ``` 問題点 ・カテゴリ「AAA」ページに遷移した際、1度はパスワード入力を求められましたが、その後はパスワードを求められない。 ・カテゴリ「AAA」ページのリンクを押した際、 ブラウザに表示されている画面は遷移前の画面でポップアップでユーザー名とパスワードを求められる。 ※正しく入力するとカテゴリ「AAA」ページが表示される プラグインを使用する方法でもその他でも構いません。 以下の実装が出来る方法を探しております。 1カテゴリ「AAA」のリンクを押下した時、カテゴリ「AAA」のページを表示。 2カテゴリ「AAA」のページに誰でも見られる注意書きを表示。 3カテゴリ「AAA」の内容はパスワードで保護されている。 4正しいパスワードを入力した場合のみ「カテゴリAAA」の内容が表示される。 ※idはあっても無くても構いません。 5一定時間経過、またはブラウザを閉じた後に再度カテゴリ「AAA」のページに遷移しようとした際にパスワードを要求する。 どうぞお知恵をお貸しください。
回答: ### 現在のコードの問題点 提示されたコードでは、設定または入力したパスワードがset_cookieによってクッキーに書き込まれているため一度入力してしまうとブラウザのクッキーを消去するまでパスワードは保存され、自動的にカテゴリの内容が表示されます。 パスワードはユーザーに決めさせるのか、サーバーが発行したものを使わせるのか、使用が明確に示されていません。 ### 解決の手順 なぜワードプレスでやりたいのか、 ワードプレスでなければならないことをしようとしているのか、 ポップアップにしたくないならheader関数ではなく、一度パスワード入力画面をHTML出力する。 パスワードの管理方法が示されていない。 どのようなサイト設計を考えられていらっしゃるのか、明確にしてください。