我想在WordPress中创建两个新的用户类型

时间:2017-08-22 15:44:37

标签: wordpress customization

在WordPress中,我想创建两个注册用户类型:1.teacher和2. student ..表示注册为教师并注册为学生。

  1. 教师注册是免费的,它会发布他的视频,文字等。

  2. 学生注册不是免费的,但是当学生订阅此项目时,学生注册为期6个月和12个月,然后学生会向老师展示所有帖子。

  3. 在此,请您建议我如何创建此类注册和会员资格......

    提前致谢

1 个答案:

答案 0 :(得分:0)

我认为你可以使用add_role函数来完成它。

add_role函数中有三个参数。

add_role( $role, $display_name, $capabilities );

$ role: 角色的唯一名称。

$ display_name: 要在WordPress管理面板中显示的名称。

$ capabilities: 可以访问的权限。

可以找到所有功能的完整列表here

第2步 :在注册表单中添加用户角色下拉列表

//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'] ) );
}

最后如何检查用户是否处于特定角色?

$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
    //The user has the "author" role
}