WordPressで特定の条件に基づいて条件付きでユーザーの役割を割り当てる方法を考えたことはありますか?これは、ユーザーのアクション、メンバーシップのステータス、またはその他の条件に基づいて独自のロールを必要とするサイトにとって非常に便利です。
WPFormsとUser Registrationアドオンは登録フォームを作成するための強力なツールですが、特定の条件に基づいてユーザの役割を動的に割り当てる必要がある場合もあります。
このガイドでは、WPFormsを使用してWordPressでユーザーの役割を条件付きで割り当てる方法を説明します。
WordPressのユーザーの役割と機能を理解する
WordPressにはいくつかのロールが組み込まれています。以下に、WordPressがサポートしているデフォルトのユーザーロールを紹介します:
- 管理者:サイトのバックエンドへのフルアクセス。このロールは、新規ユーザの追加、ユーザロールの編集、プラグインやテーマのインストールなどを行うことができます。
- エディター:他の人が書いたコンテンツであっても管理し、公開することができる。投稿関連の活動に限定されることが多い。
- 著者WordPressのAuthorロールは、ユーザーが自分の投稿のみを公開・管理できるようにします。
- 投稿者:WordPressでは、投稿者は記事を書いたり管理したりすることはできますが、公開することはできません。
- Subscriber(購読者):通常、閲覧やコメントをするための限定的なアクセス。
各ロールには、ユーザーができること、できないことを決定する一連の「機能」があります。WordPressのユーザー・ロールの機能をよく理解することが重要で、サイトに登録したユーザーがどのような権限を得られるかを知ることができます。WordPressのユーザーロールと権限について詳しく知りたい方は、WPBeginnerのガイドをチェックすることをお勧めします。
WordPressでユーザー・ロールを条件付きで割り当てる方法
ここでは、WordPressでユーザーの役割を条件付きで割り当てる方法をステップバイステップで説明します。
ステップ1: WPFormsプラグインをインストールして有効化する
WPFormsはWordPressで基本的なフォームと高度なフォームを作成するのに最適なプラグインです。
シンプルなコンタクトフォームから 条件ロジックのような高度な機能まで、信頼できるツールで、複数のサイトで活躍してくれています。
WPFormsのProライセンスには、WordPressサイト上で登録フォームやログインフォームを作成できるUser Registrationアドオンへのアクセスが含まれています。

Proライセンスを購入したら、WordPressサイトにWPFormsをインストールして有効化してください。WPFormsのインストール方法はこちらのガイドをご覧ください。
ステップ2:ユーザー登録アドオンのインストールと設定
WPFormsプラグインをインストールした後、User Registrationアドオンもインストールする必要があります。
アドオンをインストールするには、WordPressの管理画面にアクセスし、WPForms " Addonsに 移動します。次に、ユーザー登録アドオンを見つけるまで下にスクロールするか、検索バーを使用します。アドオンが見つかったら、アドオンのインストールをクリックします。

サイトにユーザー登録アドオンをインストールして有効化したら、登録フォームの作成に進みます。
フォームの作成
ゼロからフォームを作成することもできますし、ユーザー登録フォームテンプレートを使ってフォーム作成プロセスをスピードアップすることもできます。このチュートリアルではユーザー登録フォームテンプレートを使用します。このテンプレートにアクセスするには、WPForms " 新規追加 に移動します。そしてサイドバーメニューからアドオンテンプレートを選択します。

ここから、下の「テンプレートを使用する」ボタンをクリックして、ユーザー登録フォームのテンプレートに移動します。

これでフォームビルダーが表示され、テンプレートをさらにカスタマイズできるようになります。

フォームビルダーで、フォームに選択肢フィールドを追加します。このチュートリアルでは、2つのオプションを持つドロップダウンフィールドを追加します:先生と生徒です。

また、ユーザーが登録時にアカウントタイプを選択しなければならないように、必須オプションを有効にします。

次のステップで必要になるので、ドロップダウン・フィールドのIDをメモしておく。

フィールドを追加し、フィールドオプションをカスタマイズした後、Settings " User Registrationでアドオンの追加設定にアクセスしてください。

ユーザー登録フォームテンプレートを使用した場合は、すべてのフィールドマッピングが完了しています。しかし、ゼロから登録フォームを作成する場合は、フォームフィールドを WordPress のユーザーメタデータにマッピングする必要があります。

デフォルトでは、"User Roles "セクションは "Subscriber "に設定されています。ロールの割り当ては条件付きロジックで処理されるので、今のところ心配する必要はありません。しかし、このスニペットがあなたのサイトで正しく動作しない場合、これがユーザに割り当てられたデフォルトのロールになることに注意してください。

フォームのカスタマイズが終わったら、必ず「保存」ボタンをクリックして変更を保存してください。

ステップ3:条件付きでユーザーの役割を割り当てるスニペットを追加する
WPFormsは現在、デフォルトでは他のフィールドからの入力に基づいてユーザロールを割り当てることをサポートしていません。しかし、カスタムPHPスニペットを使用することで、フォームの入力に基づいて条件付きでユーザのロールを割り当てるように登録フォームをカスタマイズすることができます。
この例では、登録フォームに追加したドロップダウンフィールドをチェックするように設定します。もしユーザが自分のアカウントタイプとしてTeacherを選択した場合、ユーザにEditorロールを割り当てます。もしユーザが学生を選択した場合、このスニペットはユーザに作者ロールを割り当てます。
下記のスニペットをあなたのサイトにコピー&ペーストしてください。私は WPCコード プラグインを使用して、あなたのサイトにスニペットを追加します。このプラグインを使えば、WordPressサイトにカスタムコードスニペットを簡単に追加できる。 functions.php
ファイルを作成したり、サイトが壊れることを心配したりする必要はない。
WPCodeプラグインの使用方法の詳細については、WordPressにカスタムスニペットを追加するチュートリアルをご覧ください。
コードの説明
上のスニペットでは wpforms_user_registration_process_registration_get_data
フィルタを使用して、ユーザーが登録フォームを送信した後にユーザーデータを取得します。フォームのドロップダウンフィールドをチェックし、入力内容に基づいてユーザーにロールを割り当てます。
IDが13のフォームでのみ動作するようにスニペットを設定しました。これは私の登録フォームのIDに対応しています。この ID をあなたのフォームの ID と一致させる必要があります。フォームの ID を取得するには、WPForms " All FormsにアクセスしてShortcodeカラムの下を見てください。ショートコードの数字がフォームの ID です。

また $role_field_id
変数はドロップダウン・フィールドのIDで、上のコードでは6に設定されています。この変数もドロップダウン・フィールドのIDに合わせて置き換える必要があります。このコードでは ドロップダウン・フィールドのID.ここでこの値を使う。
について $role_mapping
配列はドロップダウンフィールドの値のマッピングを定義する場所です。Teacher は WordPress の Editor ロールに対応し、Student オプションは Author ユーザーロールに対応します。登録フォームのオプションの数に応じて、さらにキーと値のペアを追加することができます。
プロからのアドバイス
上のスニペットの生徒フィールドと教師フィールドのマッピングは、登録フォームをカスタマイズするときにドロップダウンフィールドに指定したオプションに対応しています。もしあなたのドロップダウンフィールドのオプションが私のものと異なる場合は、 $role_mapping 配列のキーペアを更新して、フォームで使用した値と一致するようにしてください。
スニペットでは、ユーザー・ロールに関連するスラッグを使用してマッピングします。例えば、'editor'はWordPressのEditorロールに対応します。以下に、WordPressのデフォルトのユーザーロールとそのスラッグを示します:
- 管理者 - 'administrator'
- エディター - 'editor'
- 著者 - 'author'
- コントリビューター
- サブスクライバー - 'subscriber'
ステップ4: 条件付きでユーザーロールを割り当てるフォームのテスト
スニペットを追加した次のステップは、ユーザーにロールアウトする前にフォームが正しく動作するかテストすることです。そのためには、テストエントリーを送信して、ユーザーロールが動的に設定されるかどうかを確認することをお勧めします。
私のフォームでテスト登録を行い、「アカウントの種類」フィールドを「先生」に設定してみます。

さて、WordPressの管理エリアでユーザーアカウントを確認するには、ユーザー " すべてのユーザーと進みます。ここに、サイト上のすべてのユーザーアカウントが表示されます。登録フォームの入力時にTeacherを選択したため、テストユーザーのロールは動的にEditor に設定されます。

フロントエンドでユーザが自分の役割を選択できるようにする際に注意しなければならないことは、ユーザが選択するオプションをコントロールできないということです。私たちの実装では、例えば、学生は教師アカウントタイプを選択することができ、フォームは送信されます。
Form Locker アドオンを使って登録フォームへのアクセスを制限することができます。これにより、特定のパスワードを持つユーザーだけがフォームにアクセスできるようになります。
あるいは、フォームビルダーの設定 " ユーザー登録に移動して、登録フォームのユーザー認証を有効にすることもできます。次に、ユーザー認証を有効にするオプションをオンにして、手動承認方法を選択します。

この方法では、サイト管理者は各ユーザーの登録を手動で確認し、要件を満たしていればユーザーアカウントを承認します。アカウントを承認する前に、ユーザーが正しいアカウントタイプを選択したかどうかを確認することができます。
こちらもお読みください:ファイルアップロードのセキュリティ:オンラインフォームのトップヒント
ステップ 5: WordPress登録フォームを公開する
最後に、登録フォームをページに追加してみましょう。そのためには、フォームを編集してフォームビルダーにアクセスします。そしてフォームビルダーのページの右上にある埋め込みボタンをクリックします。

新規ページまたは既存ページでフォームを公開するオプションがあります。このガイドでは、新しいページを作成するオプションを選択します。

新しいページに名前を付け、「Let's Go」をクリックします。

フォームが埋め込まれたWordPressページエディタが表示されます。公開ボタンをクリックしてページを公開します。

フロントエンドでこのページを確認すると、完全に機能するユーザー登録フォームがあることがわかります。なお、ショートコードやウィジェットを使ってフォームを埋め込むことも可能です。
FAQ - ユーザーロールを条件付きで割り当てる方法
WordPressで条件付きでユーザーロールを割り当てる方法について、よくある質問にお答えします。
複数のユーザー・ロールを条件付きで割り当てることはできますか?
いいえ、WordPressのコアは、デフォルトではユーザーごとに1つの役割しかサポートしていません。しかし、User Role Editorのようなプラグインを使えば、手動で複数のロールを割り当てることができます。
条件付きユーザーロール割り当てを実装した場合、既存のユーザは影響を受けますか?
いいえ、これはWPFormsによる新規ユーザ登録にのみ影響します。既存のユーザの役割は変更されません。
WordPressでカスタムユーザロールを作成するには?
これを実現する最も簡単な方法は、WordPressプラグインを使用することです。Membersプラグインを使用すると、サイトに新しいユーザーロールを追加し、各ロールの機能をカスタマイズすることができます。作成した新しいロールは、WPFormsのユーザ登録アドオンをカスタマイズする際にユーザロールドロップダウンに表示されます。
私のサイトでスニペットが機能しないのはなぜですか?
これは、フォームIDまたはフィールドIDが登録フォームのものと一致しない場合に発生する可能性があります。スニペットをフォームIDとフィールドIDで更新してください。
また、ドロップダウンフィールドのオプションがスニペットで指定されたロールと一致しない場合、WPFormsはユーザ登録アドオンを設定する際に指定されたデフォルトのロールをユーザに割り当てます。
次に、登録フォームのスタイルをカスタマイズします。
これで、フォームのフィールドからの入力に基づいて動的にユーザの役割を割り当てる機能的な登録フォームができました。登録フォームをサイトのフロントエンドに表示する方法を紹介しました。しかし、さらに一歩進んでフォームを美しくすることができることをご存知でしたか?WPFormsを使えば、CSSを記述することなくWordPressのフォームをスタイリングすることができます。
また、サイトのロゴでブランド化されたカスタムログインページを作成し、ユーザーがアカウントにログインできるようにすることもできます。
フォームを作る準備はできましたか?最も簡単なWordPressフォームビルダープラグインで今すぐ始めましょう。WPForms Proにはたくさんの無料テンプレートが含まれており、14日間の返金保証がついています。
この記事がお役に立ちましたら、Facebookや TwitterでWordPressの無料チュートリアルやガイドをフォローしてください。