• お世話になっております。
    WordPressどころかWeb系は全く初めて手掛ける者です。

    現在、一部分は会員制になるサイトを構築しようとしています。

    WordPressで作ったトップページにリンクボタンを設置しました。
    このリンクボタンをクリックすると例えばですが・・・

    http://www.XXXXXXXXXXXX.org/members/

    というURLをアクセスしにいきます。

    ただし、上記URLのサイトを表示させる前にログインIDと
    パスワードの入力を必要とさせ、正しいログインIDと
    パスワードが入力された場合に上記URL以下のサイトが
    閲覧できる仕組みを作りたいです。
    (ちなみにログインIDとパスワードは共通のもので1つだけ
     しかありません)

    上記仕様を実現させるために、どのような方法があるでしょうか?
    プログラムロジックでも、プラグイン適用でも構いません。
    簡単な仕組みで実現できる方法をご教授ください。

    よろしくお願いいたします。

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

    「Theme My Login」というプラグインがあることが分かったので
    このプラグインを使って何とかしてみよう

    プラグインをインストールしてアクティブにしていただければ、作業完了

    (プラグインのインストールの仕方が解らない場合は、その旨書いてください。)

    あとは、

    http://www.example.com/main/のサイドバーなどに、

    <a href="http://www.example.com/members">会員用</a>

    と、リンクして クリックすれば、membersのログイン画面が表示されると思います。

    (ちなみにログインIDとパスワードは共通のもので1つだけ
     しかありません)

    この意味が解りませんが、必要なら、いくつでも作れると思います

    追伸

    例示用のURLを記述する時は

    http://www.XXXXXXXXXXXX.org/

    というものより

    http://www.example.com/

    を使ったほうがいいです 🙂

    理由は、Example Domains で検索してみてくださいね

    (ちなみにログインIDとパスワードは共通のもので1つだけ
     しかありません)

    nobitaさんも書かれていますが、WordPressのユーザー機能を使うので、
    いくらでも好きなだけ、作っても大丈夫です。
    その際に、「閲覧だけ」など制限するのであれば、Codexを参照に適切な権限グループを割り当ててください。
    Codex: ユーザーの種類と権限

    ここまでがID・パスワードの話です。

    次はログインする部分について。
    プラグインを使う、使わないにかかわらず、
    WordPressのユーザーと連動させてアクセス制限を行うならテンプレートの改修が必須です。

    基本的にはheader.phpの一番先頭に

    <?php
    // ユーザーがログインしておらず、
    // カスタム投稿タイプ members の個別ページを表示するとき
    if ( !is_user_logged_in() && is_singular('members') ) {
        auth_redirect(); // ログイン画面にリダイレクト
    }
    ?>

    と入れてあげます。
    コードでは「カスタム投稿タイプmembersのシングルページを表示する時」としていますが、
    特定のカテゴリーアーカイブやそれに属する投稿などにしたい場合は、
    条件分岐タグを参照に、Wisdomtieさんの使いたい状況に合わせてください

    ここまでならプラグインは必要ありません。
    auth_redirect() でWordPressのログイン画面が表示されます。

    プラグインを使うケースが考えられるのは

    • 権限グループによってログイン後に表示されるリダイレクト先を変えたい
    • ログイン画面をオリジナルのものに変えたい
    • サイドバーにウィジェットとしてログインフォームを設置したい

    等の場合です。

    様々なプラグインがあるので、ここは割愛します。

    まずはプラグインを使わずとも、WordPressの機能を使ってアクセス制限とログインが行えるようにしてみてはどうでしょうか?

    トピック投稿者 Wisdomtie

    (@wisdomtie)

    トピック投稿者 Wisdomtie

    (@wisdomtie)

    お世話になっております。

    nobita様もgatespace様もご回答、有難う御座います。
    御二方のご意見、参考になりますが、まだやりたいことが実現できていません。

    > まずはプラグインを使わずとも、WordPressの機能を使ってアクセス制限とログイン
    > が行えるようにしてみてはどうでしょうか?

    そうですね、そうしたいと思います。

    私のやりたいことは・・・、

    トップ画面に設置したhttp://www.example.com/membersというリンクがクリック
    されたとき、ログインしているユーザーは上記URL以下のサイトを参照できる
    けれども、ログインしていないユーザーは上記URLをクリックしたとき
    ログイン画面を表示させて、http://www.example.com/members以下のサイトは
    閲覧できない仕組みにしたいです。
    上記内容を実現するために、どのようなロジックを書けばよいでしょうか?

    ご教授よろしくお願いします。

    if ( !is_user_logged_in() && <a href="http://www.example.com/members">会員用</a>)

    ちょっと、私では、言わんとするところが理解できませんでした

    なにが問題で目的を達成できないのか、具体的に説明頂くと、解答やヒントが付く可能性が高くなるとおもいますよ 🙂

    追伸:

    コードを記述する時には、コード全体を選択して、codeというボタンを押してください

    修正:
    コードが消えてしまったようですが、

    「そんなに気にしないでください。」

    マルチサイトがすでに稼動しているなら、不安な点もあるのかもしれないですが、
    「習うより慣れろ」という事もあるので、コードを書いてみるなり、プラグインを試してみるなりしたほうが、解決は早いですよ

    http://www.example.com/members以下のサイト

    ↑WordPressで作られてるの?
    それなら「何」をもって「members以下」としているのですか?
    カスタム投稿タイプ? カテゴリー??

    そもそもの構造が分からないので、条件分岐タグの具体例を提示できません。

    また、トップページからのみのアクセスを仮定されていますが、
    例えば外部のリンクやURL直打ちなのでトップページを経由せずに
    「members以下」にアクセスした場合も考えないと。

    あとは今回、直接質問されている内容ではないですが、
    Feedにアクセス制限をかけている投稿(ページ)が表示されないようにもしないと、
    意味ないですよね?

    トピック投稿者 Wisdomtie

    (@wisdomtie)

    nobita様

    コードを記述する時には、コード全体を選択して、codeというボタンを押してください

    なるほど、そのようにするのですね、以降そのようにいたします。

    gatespace様

    http://www.example.com/members以下のサイト
    ↑WordPressで作られてるの?
    それなら「何」をもって「members以下」としているのですか?
    カスタム投稿タイプ? カテゴリー??

    これは、phpファイルに直接URLを書いています。

    また、トップページからのみのアクセスを仮定されていますが、
    例えば外部のリンクやURL直打ちなのでトップページを経由せずに
    「members以下」にアクセスした場合も考えないと。

    そうなんです。
    そこは説明不足でしたが、認識をしておりました。
    members以下サイトをURLで直接入力されて参照されたら困りますので、
    何とかしないといけないです。
    この場合、効率の良い方法は「Theme My Login」とかいうプラグインを
    使用した方が良いですか?

    Feedにアクセス制限をかけている投稿(ページ)が表示されないようにもしないと、
    意味ないですよね?

    すみません、上記の意味が分かりません。

    これは、phpファイルに直接URLを書いています。

    このお返事はアクセス制限したいコンテンツへのリンク方法ですよね?

    そうではなくて、アクセス制限したいコンテンツ(この場合における/member/以下の各ページ or 投稿)は
    どうやって作っているんですか?
    静的なHTMLやWordPressに関係しないPHPファイルですか?
    WordPressなら、カスタム投稿タイプですか? 投稿のカテゴリーですか?

    ここが分からないと、そもそもWordPressのみで実現できることなのか、
    WordPressの条件分岐タグをどうすればいいのかも分からないので、回答のしようがないです。

    また、トップページからのみのアクセスを仮定されていますが、
    例えば外部のリンクやURL直打ちなのでトップページを経由せずに
    「members以下」にアクセスした場合も考えないと。

    この場合、効率の良い方法は「Theme My Login」とかいうプラグインを
    使用した方が良いですか?

    プラグインは使わなくてもできます。
    と言うよりも、WordPressのユーザー機能を利用して、アクセス制限を行うコード
    (私の最初の投稿)にプラグインは関係ありません。

    <?php
    // ユーザーがログインしておらず、
    // カスタム投稿タイプ members の個別ページを表示するとき
    if ( !is_user_logged_in() && is_singular('members') ) {
        auth_redirect(); // ログイン画面にリダイレクト
    }
    ?>

    is_user_logged_in はWordPressに登録してあるユーザーがログインしてるかどうかを判断し、ログインしていれば true、そうでなければ falseを返します。
    is_singularは、固定ページ、個別投稿ページ、添付ファイルページであるかどうかを判定しtrueか falseを返します。
    例示したコードではis_singular('members')とすることで「カスタム投稿タイプ members の個別ページ」かどうかを判定しています。
    この両方の戻り値をみて「ログインしていなくて、かつ、カスタム投稿タイプ members の個別ページを表示しようとしているとき、ログインページに遷移させる」というのがコード全体の流れです。
    「個別のページ」を条件に判定しているので、
    どこからリンクされたとか、URL直打ちとか、関係ないです。

    これが特定のカテゴリーアーカイブだったり、
    特定のカテゴリーに属する投稿だったりする場合に
    条件分岐タグの書き方が変わります。

    フィード(Feed)は投稿のフィードの事です。
    テーマにもよりますが、大概のテーマで実装されています。
    意味が分からないのであれば、それはとりあえず置いておいてください。

    gatespaceさん

    Wisdomtieさんは、同様の質問で、以下のように書いています

    http://ja.forums.wordpress.org/topic/11422?replies=3

    マルチサイト(サブディレクトリ方式)の機能を使って一般公開用サイトと
    会員専用サイトを構築しようとしています。

    http://www.XXXXXXXXX.org/main/
    ↑一般公開用

    http://www.XXXXXXXXX.org/main/member/
    ↑会員専用

    のような構成にしています。

    トピック投稿者 Wisdomtie

    (@wisdomtie)

    gatespace様

    そうではなくて、アクセス制限したいコンテンツ(この場合における/member/以下の各ページ or 投稿)は
    どうやって作っているんですか?

    nobita様のおっしゃる通り、マルチサイトにしているんです。

    ですので・・・

    http://www.example.org/

      一般用サイト

    http://www.example.org/members/

      会員専用サイト

    としています。

    マルチサイト化までは、今の私の力量で何とかできましたが、
    これからどのように進んでいけばよいのか大変困っております。

    であれば、マルチサイトの子サイトで使っているテーマのheader.phpに

    <?php
    // ユーザーがログインしていなければ
    if ( !is_user_logged_in() ) {
        auth_redirect(); // ログイン画面にリダイレクト
    }
    ?>

    と記述すれば良いのでは?

    ※参照にすべきトピックス(同様の質問)や、Webサイトなどががあるのなら、
    あらかじめリンクを書くなどしてください。
    そうしないと、このトピックス「だけ」見ている人には意味が通じません。
    利用者全員がすべてのトピックスをチェックしている訳ではないですよ?

    トピック投稿者 Wisdomtie

    (@wisdomtie)

    gatespace様

    ご連絡、有難う御座います。

    マルチサイトの子サイトで使っているテーマのheader.phpに

    とはどこにあるのでしょうか?
    (上記内容の意味を私なりに解釈すると子サイト用のheader.phpが
     もう1つ存在すると思えるのですが・・・)
    現在、試しに標準で搭載さているtwentyelevenのテーマを
    マルチサイトにしてやってみているのですが、twentyelevenの
    ディレクトリの下にheader.phpは1つしかありません。

    ※参照にすべきトピックス(同様の質問)や、Webサイトなどががあるのなら、
    あらかじめリンクを書くなどしてください。

    WordPressフォーラムのルールは順守しますが、上記はどういう
    意味なのでしょうか?
    (特に「あらかじめリンクを書く」というところ)
    意味が分かれば、以後そのように致します。

    Wisdomtieさま

    横からすみません。

    http://www.example.org/
    ↑こっちと、↓こっちで、同じテーマファイルを使って作ってるんですか?
    http://www.example.org/members/

    別々に作っているなら、子サイト用のheader.phpが存在するのが当然です。

    同じテーマで作っているのであれば、/members/以下のページはどのように作成してあるのですか?
    (追記:これはマルチサイトとは言わない気がしますけど)

    ※参照にすべきトピックス(同様の質問)や、Webサイトなどががあるのなら、
    あらかじめリンクを書くなどしてください。

    Wisdomtieさまが、このトピックで質問なさる他に、別のトピックで同じような質問をしているのなら、
    そちらのリンクを貼っておいてください。

    参考になるurlがあるのなら、あらかじめ分かるように提示してください、という、それだけのことだと思いますが。

    sz1320さん、フォローありがとうございます。

    今回はnobitaさんがリンクしてくれましたけれども、
    本来なら最初の投稿者がしてくださいねって話です。

    テーマの話に戻りますが、まずは子サイトでどのテーマを使っているか確認してください。
    親サイトと共通なのか、別なのか、それによって先に提示したコードの書く場所や条件分岐が変わります。

14件の返信を表示中 - 1 - 14件目 (全14件中)

トピック「会員制サイトのログイン方法について」には新たに返信することはできません。