web-dev-qa-db-fra.com

Rôles lors de l'inscription (classipress)

J'ai un site classipress et je souhaite que l'utilisateur choisisse lors de son inscription sur le site s'il est enseignant ou étudiant. Ce seront des rôles différents. J'ai essayé de faire en sorte que les rôles de registration plugin fonctionnent, car c'est ce dont j'ai besoin, mais étant donné que classipress a une page de registre personnalisée, il ne semble pas fonctionner. Des idées?

3
Andrew

Dans votre fichier functions.php, procédez comme suit:

add_action('register_form','register_role_field');
add_action('register_post','check_fields',10,3);
add_action('user_register', 'register_role_fieldforuser');    
// This will register new field in registration form
function register_role_field(){ ?>
    <label>Choose your role:<br/>
    <!--- Let's check if there role already set. If $_GET['role'] = 0 -then this is teacher if 1 = student ---> 
    <?php if ( isset( $_GET['role'] ) ) { ?>
        <select id="role" class="checkboxas" name="role">
        <option value="0" <?php if( $_GET['role'] == '0' ) echo 'selected="selected"';?>>Teacher</option>
        <option value="1" <?php if( $_GET['role'] == '1' ) echo 'selected="selected"';?>>Student</option>
  <?php } else { ?>
        <!--- Incase we don't get role ---->
        <select id="role" class="checkboxas" name="role">
        <option value="0">Teacher</option>
        <option value="1" selected="selected">Student</option>

   <?php } ?>
    </select>
    </label>

<?php }

// Here we will check fields in this case only one
function check_fields( $login, $email, $errors ) {
    if( !is_numeric( $_POST['role'] ) )  
       $errors->add( 'bad_role', "ERROR: You have to select role" );
}

 function register_role_fieldforuser( $user_id, $password="", $meta=array() )  {
    if( is_numeric( $_POST['role'] ) ) {
        $userdata = array();  
        $userdata['ID'] = $user_id;
        $userdata['first_name'] = $_POST['first'];
        $userdata['last_name'] = $_POST['last'];
        if( $_POST['role'] == 0 ) 
            $userdata['role'] = 'teacher';
       else $userdata['role'] = 'student'; 
        wp_update_user($userdata); 
   }
}

Vous pouvez créer 2 liens dans votre site Web: 1 pour les enseignants: http://votrewebsite.com/wp-login.php?action=register&role=0 et un autre pour les étudiants http://yourwebsite.com/wp-login.php?action=register&role=1

Ainsi, le formulaire d'inscription sélectionnera automatiquement le rôle de l'utilisateur en fonction du rôle défini dans l'utilisateur.

1
Tommixoft