こんにちは
固定ページの公開設定で「パスワード保護」を選択してもパスワード入力なしに表示出来てしまいます。
おそらく、ブラウザにページがキャッシュされてしまっているためだろうと思います。
http://ja.forums.wordpress.org/topic/11498?replies=5
ちょっと、うる覚えですが、パスワードでログインすると、クッキーがセットされ、次からは、ログインしなくても見れたと思いますので、クッキーも消してみてください
nobitaさん
ご指摘ありがとうございます。
クッキーを消しても状況が改善しませんでした。
他のPCやiPhoneからアクセスしてもパスワードの要求なしに表示出来ます。
その他解決方法や固定ページの表示方法でパスワード保護をする以外に
お心当たりがあれば教えて頂けると助かります。
よろしくおねがいします。
試していませんが、非公開ドキュメントにセットしておいて、
ユーザーの数だけ、ページテンプレートを作成し、
ページテンプレート毎に、以下(ユーザーによって、表示またはリダイレクト)を追加
http://codex.wordpress.org/Function_Reference/wp_get_current_user
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
// Not logged in.
wp_redirect( home_url() );
exit;
}elseif ( 1 == $current_user->ID ) {
// Logged in. and user id 1
wp_redirect( home_url() );
exit;
}elseif ( 2 == $current_user->ID ) {
// Logged in. and user id 2
// Show page.
}
ログインユーザーによって、表示と、トップページのりダイレクトを切り替えるといった事は、どうですか?
nobitaさん
ありがとうございます!
早速試してみようと思ったのですが、勉強不足で理解出来ておらず、、。
0=ログインしていない
1〜3=ログインユーザー
だということはわかったのですが、
どこを書き換えれば良いのかが解りませんでした。。
AとBというユーザーがいたとすれば、Bに表示したいページには、下記のように記述して固定ページ自体は非表示にすると良いのでしょうか。。?
<?php $current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
// Not logged in.
wp_redirect( home_url() );
exit;
}elseif ( 1 == $current_user->A ) {
// Logged in. and user id 1
wp_redirect( home_url() );
exit;
}elseif ( 2 == $current_user->B ) {
// Logged in. and user id 2
// Show page.
}
?>
参考書でも調べたのですが、見当がつかず、おかしなことを言っているかもしれません、、。
よろしくお願いします。
$current_user->A
という書き方はできません。
$current_user = wp_get_current_user();
このコードは、今ログインしている人の情報を取得しています。
http://codex.wordpress.org/Function_Reference/wp_get_current_user
Default Usage に書いてあるコードを、固定ページテンプレートに書くと、ログインしている人の情報が取得できているのがわかると思います。
ログインしている人のIDが、例えば、1ならば 見せてやるということなら
if ( 1 == $current_user->ID ) {
/* 何もしなければ、テンプレートの内容を表示する処理が進みます*/
/* IDが1の人に見せたくない場合は、以下のようにリダイレクトして処理を停止して見せないようにします*/
wp_redirect( home_url() );
exit;
}
もう少し簡単に書くと
if ( 1 !== $current_user->ID ) {
wp_redirect( home_url() );
exit;
}
ログインIDが1でないときには、見せてあげないという事になります
nobitaさん
物凄く、、初歩的な質問で申し訳ないのですが、
IDは、Wordpressの管理画面「ユーザー」で作成したユーザー名で良いのでしょうか?
教えて頂いた通りのコードを各とログインをしていないユーザーがトップページにリダイレクトされるようになりました。
ただ、これまで該当のページを開くとログイン画面が表示されていたのですが、それが表示されません。
↓このように書いていました。
<?php if (!is_user_logged_in()) { auth_redirect(); } ?>
この続きに教えて頂いたコードを書いたのですが、間違っているのでしょうか。。?
勉強不足で度々申し訳ありません。
物凄く、、初歩的な質問で申し訳ないのですが、
IDは、Wordpressの管理画面「ユーザー」で作成したユーザー名で良いのでしょうか?
前に書きましたが、実際にご自身で調べてください。
http://codex.wordpress.org/Function_Reference/wp_get_current_user
Default Usage に書いてあるコードを、固定ページテンプレートに書くと、ログインしている人の情報が取得できているのがわかると思います。
教えて頂いた通りのコードを各とログインをしていないユーザーがトップページにリダイレクトされるようになりました。
ただ、これまで該当のページを開くとログイン画面が表示されていたのですが、それが表示されません。
この部分は、サイトの設計者がどのように考えるかによります。
例えば、閲覧権限のない人が、たまたまそのページを見ようとして、ログインページが開いたら、「ここに、私には見れないページがあるんだー」と興味を持ったり、何でアクセスできないんだろうなどと思って、何度もログイン操作を繰り返したりするかもしれませんし、
面倒なので、ログインページが表示されたほうがいいとか、その人それぞれの考えによってどのようにするかが決まっていくと思います。
ひとつだけ覚えておいてほしいのは、marrkaさんがやろうとしている作業は、Aさんは、閲覧できるけどBさんは閲覧できないといった、特別な作業なので、もし何かしらの間違いがあって、「実は、AさんのページをBさんが見ることができる」という事態が発生すると、大きなトラブルになり得るので、慎重に検証し、ご自身の判断で行ってください
nobitaさん
アドバイスありがとうございます。
教えて頂いたURLは勿論、その中に書いてあることがわからなければWordPressの参考書で調べてみたりもしたのですが、
書いてあることはわかっても、それに大してどう書けば良いのかがわかりません。
もう少し調べてみますが、PHPの知識が乏しいので無理かもしれないですね、、。
ありがとうございました。
自己解決しましたので解決済みにします。
ありがとうございました。