WordPress 会員登録時にユーザーが会員の評価を選択できるようにする

2

WordPressユーザーが会員登録をすると、個人会員/企業会員あるいは学生/教員/職員/一般のように会員ランク(役割)を選択できるようにしたい場合があります。 この場合、 WP Roles at Registrationという無料のプラグインを使用することができます。 または人気のあるメンバーシップのプラグインであるUltimate Memberで提供される機能を使用することができます。

加入者が会員ランクを選択できるようにするWP Roles at Registration

WordPress WP Roles at Registrationプラグイン

このプラグインを利用すると、ユーザーが会員登録の過程で選択された役割(会員ランク)の中からいずれかを選択することができます。 このプラグインは、BuddyPressでもよく動作します。 管理者は、管理者ページで、ユーザーが選択可能なメンバーの評価をすることができます。

WP Roles at Registrationをインストールすると、 設定> WP Roles at Registration メニューが追加されます。 WP Roles at Registrationの設定ページをクリックすると、次のようにユーザーに表示するメンバーの評価を選択することができます。

会員レベルを設定する

Choose Roles(役割の選択)で会員登録(登録)フォームで選択できるメンバーの評価を選択します。 Role Label(役割ラベル)は、フィールド名を指定します(例えば、会員の種類)。

これにより、次のように会員登録フォームに会員ランクを選択できるフィールドが追加されます。

WordPress 会員登録

基本会員レベルの名前が英語で表示されます。 プラグインの言語ファイルを翻訳して会員ランクの名前をハングルで変えることができるようになります。

新しいメンバーの評価を追加する

WordPressで提供される基本的なメンバーの評価に加えて会員ランク(例えば、個人会員、企業会員)を追加したい場合には、 User Role Editorプラグイン(無料)を利用することができます。 使用方法は、次の方法を参考にしましょう。

たとえば、次のように「購読者」の会員ランクをそのまま複製して新しいメンバーの評価を行うことができます。

新しい会員レベル作成

基本会員レベルを設定する

次にやるべきことは、加入者が加入したときに、基本的に割り当てられているメンバーの評価を指定することです。 基本的には「購読者」が基本会員レベルに指定されています。

ユーザーが登録したときにユーザーに基本的に付与されるメンバーの評価(役割)を変更するには、 設定>一般に移動し、 新しいユーザーのための基本的なルールで探し種類を選択します。

WordPress 基本会員レベル設定

もちろんすぐ上の "メンバーシップ「オプションを "誰でも参加することができます"として指定する必要がユーザーが会員登録をすることができます。ユーザーが会員登録をあえてする必要がない場合は、このオプションはチェックしないようにします。

設定> WP Roles at Registration ページに移動して、ユーザーが選択可能なメンバーの評価の種類を選択します。

メンバーの種類を選択する

設定を保存した後の会員登録フォームを確認してみると、ここで指定したメンバーの種類を選択できるように表示されます。

会員登録時に会員ランクを選択する

テストをしてみると、必要に応じて動作しますね。 会員登録の過程で、加入者の会員レベルや種類を区別する必要がある場合には、プラグインを使用することができます。

Ultimate Memberプラグインを使用する

Ultimate Memberのようなメンバーシップのプラグインを使用すると、メンバーの種類を選択できるドロップダウンメニューを追加することができます。 Ultimate Memberは、「役割(ドロップダウン)」フィールドを挿入します。

Ultimate Memberメンバーの役割]ドロップダウンフィールド

上記のように設定すると、次のように表示されます。

メンバーシップのプラグイン

ハングルの翻訳がぎこちない部分がありますね。 そのような部分は、 Loco TranslateプラグインやPoeditプログラムを使用して変更してください。

他の方法 - カスタムコード

プラグインの使用が気にされる場合は、次のコードを利用してみることができます。

//1. Add a new form element... 새 폼 요소 추가하기
add_action( 'register_form', 'myplugin_register_form' );
function myplugin_register_form() {

global $wp_roles;

echo '<select name="role" class="input">';
foreach ( $wp_roles->roles as $key=>$value ) {
// Exclude default roles such as administrator etc. Add your own
if ( ! in_array( $value['name'], [ 'Administrator', 'Contributor', ] ) {
echo '<option value="'.$key.'">'.$value['name'].'</option>';
}
}
echo '</select>';
}

//2. Add validation. 유효성 검사 추가하기
add_filter( 'registration_errors', 'myplugin_registration_errors', 10, 3 );
function myplugin_registration_errors( $errors, $sanitized_user_login, $user_email ) {

if ( empty( $_POST['role'] ) || ! empty( $_POST['role'] ) && trim( $_POST['role'] ) == '' ) {
$errors->add( 'role_error', __( '<strong>ERROR</strong>: You must include a role.', 'mydomain' ) );
}

return $errors;
}

//3. Finally, save our extra registration user meta. 추가 등록 사용자 메타 저장하기
add_action( 'user_register', 'myplugin_user_register' );
function myplugin_user_register( $user_id ) {

$user_id = wp_update_user( array( 'ID' => $user_id, 'role' => $_POST['role'] ) );
}
// 출처: https://wordpress.stackexchange.com/questions/195603/how-to-add-users-roles-dropdown-in-registration-in-wordpress

実際に動作するかは、テストしてみました。 正常に動作しないというコメントもありますね。 正常に動作しない場合は、上記のコードと、次の WordPress 公式文書を参照してしっかりとしたコードを作成することができそうです。

  • https://codex.wordpress.org/Customizing_the_Registration_Form
  • https://codex.wordpress.org/Function_Reference/wp_update_user

おわりに

以上で WordPressで会員登録時にユーザーが会員の評価を選択できるようにする方法について説明しました。 より精巧に会員制のサイトを運営したい場合 究極のメンバーWP-メンバー 同じメンバーシップのプラグインを使用することができます。

ちなみにProfilePressというユーザー・プロファイルのプラグインもありますね。 このプラグインは、コストが結構高価ですが、この記事で言及した機能に加えて、様々な機能を提供することです(https://profilepress.net/how-to-allow-user-role-selection-at-wordpress-registration/を参照)。

しかし、このようなプラグインは、セキュリティ上の問題があることがありますので、常に最新のバージョンにアップデートすることをお勧め。 実際、最近のUltimate Memberプラグインのセキュリティの脆弱性のために更新が疎かにした多くのサイトがマルウェアに感染している事例が発生しました。

前述したようあえて会員登録を受ける必要がない場合は会員登録機能を無効にする方が良いようです。

2のコメント

  1. 実際には、最も基本的であるがただ別々に作成リンクをかけています。
    https://danbistore.com/register/

    事実役割は同じです。

コメントを残す

コメントを入力してください!
名前を入力してください