我必须创建一个会员网站,但我需要给每个注册自动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\' );
如何使用分配的增量编号填充该字段?
最合适的回答,由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;
}