注册时的角色(分类新闻)

时间:2011-05-11 作者:Andrew

我有一个classipress网站,希望用户在注册该网站时选择他们是教师还是学生。这些将是不同的角色。我一直在尝试让注册插件中的角色工作,因为这基本上是我所需要的,但由于classipress有一个自定义的注册页面,它似乎不起作用。有什么想法吗?

1 个回复
SO网友:Tommixoft

在您的功能中。php文件执行以下操作:

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); 
   }
}
您可以在网站中创建2个链接:1个用于教师:http://yourwebsite.com/wp-login.php?action=register&role=0还有一个是给学生的http://yourwebsite.com/wp-login.php?action=register&role=1

因此,注册表自动根据uer中的角色集选择用户角色。

结束

相关推荐