我找到了一个不使用这个钩子的解决方案。只需将下面提到的代码放在 register-form.php 上,例如:
<p>
<label for="role<?php $template->the_instance(); ?>"><?php _e( 'Role', 'theme-my-login' ) ?></label>
<select id="role<?php $template->the_instance(); ?>" name="role">
<option value="author">Author</option>
<option value="subscriber">Subscriber</option>
</select>
</p>
然后在function.php中放一个函数,比如:
function set_role_on_registration( $user_id ) {
//$role = sanitize_text_field( $_POST['role'] );
$role = $_POST['role'];
if ( in_array( $role, array( $role, 'bprofessional' ) ) )
add_user_meta( $user_id, 'pending_role', $role );
}
add_action( 'tml_new_user_registered', 'set_role_on_registration' );
然后转到 plugins/theme-my-login/modules/user-moderation/admin/user-moderation-admin.php 并找到approve_user函数。然后替换这行代码:
$approval_role = apply_filters( 'tml_approval_role', get_option( 'default_role' ), $user->ID );
通过这一行:
$approval_role = apply_filters( 'tml_approval_role', get_user_meta($user->ID, 'pending_role', true), $user->ID );
现在,在管理员批准后,将为用户分配您选择的角色。
希望,这段代码对某人有所帮助。
谢谢
苏尼尔