Create Unique ID for user

时间:2012-09-20 作者:Andy

我必须创建一个会员网站,但我需要给每个注册自动ID号的用户。

例如

用户2-代码为pay-102

用户3-有代码-pay-103

我在论坛上搜索了一下,找到了这个,这正是我想问的-What is the fastest way to generate a unique id number when registering a user

我有一段代码可以将其添加到管理区域的用户面板中:

function fb_add_custom_user_profile_fields( $user ) {
?>
<h3><?php _e(\'Extra Profile Informations\', \'themename\'); ?></h3>
<table class="form-table">
    <tr>
        <th>
            <label for="memnumber"><?php _e(\'memnumber\', \'themename\'); ?>
        </label></th>
        <td>
            <input type="text" name="memnumber" id="memnumber" value="<?php echo esc_attr( get_the_author_meta( \'memnumber\', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e(\'Please enter your Membership number.\', \'themename\'); ?></span>
        </td>
    </tr>
</table>
<?php }
function fb_save_custom_user_profile_fields( $user_id ) {
if ( !current_user_can( \'edit_user\', $user_id ) )
    return FALSE;
update_usermeta( $user_id, \'memnumber\', $_POST[\'memnumber\'] );
}
add_action( \'show_user_profile\', \'fb_add_custom_user_profile_fields\' );
add_action( \'edit_user_profile\', \'fb_add_custom_user_profile_fields\' );
add_action( \'personal_options_update\', \'fb_save_custom_user_profile_fields\' );
add_action( \'edit_user_profile_update\', \'fb_save_custom_user_profile_fields\' );
如何使用分配的增量编号填充该字段?

2 个回复
最合适的回答,由SO网友:Lars Koudal 整理而成

下面是一些代码,它从用户元表中读取最大的数字,然后将该数字加上+1。这将为每个新注册的用户保存该数字。该代码通过动作挂钩触发"user_register".

add_action( \'user_register\', \'assignuserid\');

function assignuserid($user_id) {
   global $wpdb;
   $latestid=$wpdb->get_var("SELECT meta_value from $wpdb->usermeta where meta_key=\'memnumber\' order by meta_value DESC limit 1;");
   update_user_meta( $user_id, \'memnumber\', $latestid+1 );
}
注:如果;支付—“S”;是固定的,它不需要是存储值的代码的一部分,只需要是输出的一部分。i、 e:

echo "Your userid: PAY-"+$userid.

SO网友:Rudi

这里有一个更好的解决方案:

add_filter("user_register", "get_unique");
function get_unique($user_id){
    $prefix = "PAY-";
    do {
        $unique = mt_rand();
        $unique = substr($unique, 0, 3);
        $unique = $prefix . $unique;
    } while (!check_unique($unique));
    return update_usermeta( $user_id, \'memnumber\', $unique );//$unique;
}
function check_unique($unique) {
    global $wpdb;
    $result = $wpdb->get_var("SELECT meta_value from $wpdb->usermeta where meta_key=\'memnumber\' AND meta_value = \'$unique\'");
    if(empty($result))
        return true;
    return false;
}

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register