Crează ID unic pentru utilizator
Trebuie să creez un site de membrii, dar trebuie să atribui fiecărui utilizator înregistrat un număr de ID automat.
De exemplu,
Utilizatorul 2 - are codul - pay-102
Utilizatorul 3 - are codul - pay-103
Am căutat pe forum și am găsit asta, este exact ceea ce întreb - Care este cea mai rapidă metodă de a genera un ID unic la înregistrarea unui utilizator
Am o bucată de cod care o va adăuga în panoul utilizatorului din zona de administrare:
function fb_add_custom_user_profile_fields( $user ) {
?>
<h3><?php _e('Informații Profil Adiționale', 'themename'); ?></h3>
<table class="form-table">
<tr>
<th>
<label for="memnumber"><?php _e('Număr Membru', '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('Introdu numărul tău de membru.', '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' );
Cum pot completa acel câmp cu un număr incremental care să fie atribuit automat?
Iată un cod care citește cel mai mare număr din tabelul de meta-informații ale utilizatorului și apoi adaugă +1 la acel număr. Acest cod salvează acel număr pentru fiecare utilizator nou înregistrat. Codul este declanșat prin intermediul cârligului de acțiune "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 );
}
Notă: Dacă prefixul "pay-" este fix, nu trebuie să facă parte din codul care stochează valoarea, ci doar din output. Adică:
echo "ID-ul tău de utilizator: PAY-"+$userid.

Iată o soluție mai bună:
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;
}
