概要
ユーザー登録時に特定の条件に基づいてカスタムロールを自動的に付与するためのフックについて解説します。
ユースケース
WordPressサイトにおいて、特定の条件を満たしたユーザーに対して、自動的に特定の権限を持つカスタムロールを付与したい場合に、このスニペットが必要となります。
前提条件
このスニペットを利用するには、functions.phpファイルやカスタムプラグイン内でコードを追加することが前提となります。
サンプルコード
function auto_assign_custom_role_on_registration( $user_id ) {
$user = new WP_User( $user_id );
if ( $user && !empty( $user->user_email ) ) {
$user_email = $user->user_email;
// 特定のメールアドレスを持つユーザーにカスタムロールを付与
if ( $user_email === 'example@example.com' ) {
$user->add_role( 'custom_role_name' );
}
}
}
add_action( 'user_register', 'auto_assign_custom_role_on_registration' );
解説
- `auto_assign_custom_role_on_registration` 関数は、ユーザー登録時に呼び出されるアクション `user_register` にフックして、指定の条件を満たすユーザーにカスタムロールを自動付与します。
- `WP_User` クラスを使用して、ユーザーオブジェクトを取得し、その中のメールアドレスをチェックします。
- 特定のメールアドレスを持つユーザーの場合、`add_role` メソッドを使って指定したカスタムロールを付与します。
ベストプラクティス
- セキュリティ上の観点から、カスタムロールの権限付与には慎重に検討する必要があります。不必要な権限付与はセキュリティリスクとなり得ます。
- 他の条件(例:ユーザーメタ情報、登録フォームのフィールド値)に基づいてカスタムロールを自動付与する場合も、同様の仕組みを利用できます。