運営されているサービスによっては、「申込プランによって、各会員が予約できる講師を絞り込みたい」というケースもあるかと思います。
OLBの機能拡張コードである「講師抽出モジュール」を使うと、会員ごとに予約可能な講師を絞り込むこともできます。
申込プランと担当講師の例
例えば、Skypeを使ったオンライン語学レッスンなどで、申込プランに応じて担当講師が異なり、各会員が予約できる講師を限定しているケースがあります。
例)プランごとに担当講師が異なるケース
Aプラン | Bプラン | Cプラン | |
---|---|---|---|
月額料金 | 3,000円 | 5,000円 | 8,000円 |
予約可能な講師 | John先生 Smith先生 | Betty先生 Clark先生 | Grace先生 Kevin先生 Lucy先生 |
予約保持数 | 3コマ | 5コマ | 8コマ |
OLBでは、機能拡張コードを使って「プランごとに、各会員が予約できる講師を絞り込む」ことができます。
日別スケジュール(全講師)について
「日別スケジュール(全講師)」ページは、日ごとの講師のスケジュールを並べて一覧するためのページです。標準のOLBでは「全ての講師」が表示されます。
講師抽出モジュールでできること
OLBの機能拡張コード「講師抽出モジュール」を使うと、この日別スケジュールの中で「表示する講師」や「表示しない講師」を指定できるようになります。
例えば、プランごとの担当講師に絞った「日別スケジュール」ページを作ることもできます。
プランごとの担当講師の「日別スケジュール」を作る
※「講師抽出モジュール」のインストール手順などはこちらを参照してください。
OLB講師抽出モジュール:インストールと有効化
[olb_daily_schedule]にパラメータを付加する
「講師抽出モジュール」を導入すると、ショートコード [olb_daily_schedule] にパラメータを付加することができるようになります。
既成のページを変更する場合 | OLB本体を有効化したときに自動的に作成された「日別スケジュール(全講師)」ページを編集し、ショートコードにパラメータを付加します。 |
---|---|
新たなページを作成する場合 | 既成の「日別スケジュール」ページとは別に、新たなページを作成し、ショートコード[olb_daily_schedule]を挿入します。 |
例えば、「Aプラン」の担当講師である「John先生(ID:2)」と「Smith先生(ID:3)」のスケジュールだけを表示する場合、以下のように「include_ids」パラメータを加えます。
例)ID:2,3の講師だけを表示する
[olb_daily_schedule include_ids="2,3"]
「Bプラン」や「Cプラン」についても同様に担当講師のIDを指定すれば、各プランごとの「日別スケジュール」ページを個別に作ることができます。
各会員の「プラン」に応じてスケジュールを表示する
「各会員がどのプランに申し込んでいるか?」という情報があれば、1つの「日別スケジュール」ページの中で、会員の申込プランに応じて担当講師を絞り込んだスケジュールを表示させることができます。
各会員に「申込プラン」の情報をもたせる
各会員に「申込プラン」の情報をもたせるには、user_metaデータを使う方法があります。
プラグイン「WP-Members」を使うと、会員ユーザーのプロフィールに新しいフィールドを追加することができます。
以下は、WP-Memberを使って、ユーザー情報に「申込プラン」を追加する手順です。
* WP-Membersが有効化済みという前提です。
- WPの管理画面「設定:WP-Members」を開きます
- 上部の「フィールド」タブを開きます
- 「フィールドの追加」欄で、「申込プラン」のフィールドを追加します
[ラベル名] 申込プラン
[オプション名] myplan
[フィールド形式] テキスト
[表示] (チェックする)
[必須] (チェックしない)
- WPの管理画面「ユーザー」から会員ユーザーの編集ページを開きます
- 項目「申込プラン」に「A」や「B」などプラン名を入れて更新します
新たに「日別スケジュール」のショートコードを作る
お使いのテーマの「テーマのための関数(functions.php)」に、以下のようにショートコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
add_shortcode('my_daily_schedule', 'my_daily_schedule'); function my_daily_schedule(){ global $current_user; // For Guest user if ( empty( $current_user->ID ) ) { return '会員以外は見ることができません'; } // For Member $plan = get_user_meta($current_user->ID, 'myplan', true); if ( $plan == 'A' ) { return do_shortcode('[olb_daily_schedule include_ids="2,3"]'); } elseif ( $plan == 'B' ) { return do_shortcode('[olb_daily_schedule include_ids="4,5"]'); } elseif ( $plan == 'C' ) { return do_shortcode('[olb_daily_schedule include_ids="6,7,8"]'); } else { return '申込プランが決まっていません'; } } |
この「日別スケジュール」のショートコードは、次のように表示します。
- ログインしていない訪問者には「会員以外は見ることができません」と表示
- ログイン中の会員の「申込プラン」が「A」の場合、講師2,3のスケジュールを表示
- 会員の「申込プラン」が「B」の場合、講師4,5のスケジュールを表示
- 会員の「申込プラン」が「C」の場合、講師6,7,8のスケジュールを表示
- 会員の「申込プラン」が「A,B,C」以外の場合「申込プランが決まっていません」と表示
「日別スケジュール」のショートコードを差し替える
その上で、OLBを有効化した時に作成された「日別スケジュール(全講師)」ページの本文のショートコード [olb_daily_schedule] を、上で追加した [my_daily_schedule] に変更します。
[olb_daily_schedule] → [my_daily_schedule]
これで、会員がログインしているときは、その会員の「申込プラン」に応じた担当講師のスケジュールだけが表示されるようになります。
各講師の「週間スケジュール」への対応
日別スケジュールについては対応できましたが、「講師紹介記事」の本文に挿入している、各講師の「週間スケジュール」は、そのままでは誰でも見ることができます。
そこで、簡単なショートコードを作って、その講師が担当するプランを指定し、ログイン中の会員の「申込プラン」とその講師の担当プランが一致するときだけ「週間スケジュール」を表示するようにしてみます。
申込プランに応じて「週間スケジュール」を非表示に
お使いのテーマの「テーマのための関数(functions.php)」に、以下のようにショートコードを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
add_shortcode('is_my_plan', 'is_my_plan'); function is_my_plan( $atts, $content = null ) { global $current_user; extract( shortcode_atts( array( 'plan' => null ), $atts ) ); // For Guest user if ( empty( $current_user->ID ) ) { return '講師のスケジュールは、会員以外は見ることができません'; } // For Member $myplan = get_user_meta($current_user->ID, 'myplan', true); if ( ! empty( $myplan ) && $plan == $myplan ) { return do_shortcode( $content ); } else { return 'この講師が担当するのは「'.$plan.'プラン」です。'; } } |
その上で、「講師紹介記事」の本文中のショートコード [olb_weekly_schedule id="xx"] を、上で追加した [is_my_plan] で囲います。
[is_my_plan plan="A"][olb_weekly_schedule id="xx"][/is_my_plan]
ここで指定している、plan="A" の部分が、その講師の担当プランです。
- 講師が「Bプラン」の担当講師であれば、[is_my_plan plan="B"]とします
- 講師が「Cプラン」の担当講師であれば、[is_my_plan plan="C"]とします
上のショートコードを使うと、次のように動作します。
- ログインしていない訪問者には「会員以外は見ることができません」と表示
- ログイン中の会員の「申込プラン」が「A」の場合、この講師の週間スケジュールを表示
- 会員の「申込プラン」が「A」以外の場合、週間スケジュールを表示しません
(代わりに、この講師が担当するプランを表示します)
これで、会員がログインしているときは、その会員の「申込プラン」の担当講師でなければ週間スケジュールが表示されなくなります。
ご参考になれば幸いです。
コメントは停止中です。