サポート » 使い方全般 » 固定ページのパスワード保護について

  • 解決済 marrka

    (@marrka)


    WPのバージョン:3.6.1
    使用しているテーマ:オリジナル

    固定ページ毎にアクセス出来るユーザーを制限したいと思っています。

    例)
    hoge/a → 購読者a
    hoge/b → 購読者b
    hoge/c → 購読者c

    固定ページの公開設定で「パスワード保護」を選択してもパスワード入力なしに表示出来てしまいます。
    (ログアウトをしてから確認しました。他ブラウザでもパスワードなしで表示出来ました。)

    http://wordpress.f-mobile.org/setting/1150.htmlを参考にBASIC認証を試すと、
    ID、PWの入力画面は出てきましたが、PWが通りません。
    ログイン出来なかったページは403エラーになります。
    ルートディレクトリにスラッグ名のフォルダ(空)が勝手に作成されることが原因でした。
    (なぜ出来たのかはわかりません。。)

    http://www.awawaweb.com/201201/wordpress-logined-contents.htmlを参考に
    auth_redirectを使うと、やっとログイン画面が出てユーザーID、PWでログインをする事ができました。
    <?php if (!is_user_logged_in()) { auth_redirect(); } ?>
    ↑と書きました。
    hoge/a → 購読者a 1通りの組み合わせしか出来ません。

    hoge/a → 購読者a、hoge/b → 購読者b、hoge/c → 購読者c のように
    3通りの組み合わせでアクセス制限をする方法があれば教えて下さい。
    よろしくお願いします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • こんにちは

    固定ページの公開設定で「パスワード保護」を選択してもパスワード入力なしに表示出来てしまいます。

    おそらく、ブラウザにページがキャッシュされてしまっているためだろうと思います。

    http://ja.forums.wordpress.org/topic/11498?replies=5

    ちょっと、うる覚えですが、パスワードでログインすると、クッキーがセットされ、次からは、ログインしなくても見れたと思いますので、クッキーも消してみてください

    トピック投稿者 marrka

    (@marrka)

    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.
    }

    ログインユーザーによって、表示と、トップページのりダイレクトを切り替えるといった事は、どうですか?

    トピック投稿者 marrka

    (@marrka)

    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でないときには、見せてあげないという事になります

    トピック投稿者 marrka

    (@marrka)

    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さんが見ることができる」という事態が発生すると、大きなトラブルになり得るので、慎重に検証し、ご自身の判断で行ってください

    トピック投稿者 marrka

    (@marrka)

    nobitaさん

    アドバイスありがとうございます。
    教えて頂いたURLは勿論、その中に書いてあることがわからなければWordPressの参考書で調べてみたりもしたのですが、
    書いてあることはわかっても、それに大してどう書けば良いのかがわかりません。
    もう少し調べてみますが、PHPの知識が乏しいので無理かもしれないですね、、。
    ありがとうございました。

    トピック投稿者 marrka

    (@marrka)

    自己解決しましたので解決済みにします。
    ありがとうございました。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「固定ページのパスワード保護について」には新たに返信することはできません。