WordPress : Comment créer un ID utilisateur unique dans WordPress
J’ai besoin d’ajouter un utilisateur à partir du backend WordPress. Donc, je veux générer des identifiants d’utilisateur uniques pour eux. Mais je peux y parvenir. Quelqu’un peut-il m’aider à ce sujet.
Voici ce que j’ai fait jusqu’à présent. C’est mieux si je pouvais ajouter l’identifiant d’utilisateur unique généré par défaut par WordPress à la fin de mon champ.
// Customize the user fields
function custom_user_profile_fields($user) {
$rand = randomGen(1000,5000,1);
$auth_Token = '2021-ABCD-'.$rand[0];
?>
<h3>Profile Information</h3>
<table class="form-table">
<tr>
<th><label for="srn">Student Registration Number</label></th>
<td>
<input type="text" class="regular-text" name="srn" value="<?php echo (get_option('srn') ? esc_attr( get_the_author_meta( 'srn', $user->ID ) ) : $auth_Token); ?>" id="srn" readonly /><br />
</td>
</tr>
</table>
<?php
}
add_action( 'show_user_profile', 'custom_user_profile_fields' );
add_action( 'edit_user_profile', 'custom_user_profile_fields' );
add_action( "user_new_form", "custom_user_profile_fields" );
function save_custom_user_profile_fields($user_id) {
# again do this only if you can
if(!current_user_can('manage_options'))
return false;
# save my custom field
update_usermeta($user_id, 'srn', $_POST['srn']);
}
add_action('user_register', 'save_custom_user_profile_fields');
add_action('profile_update', 'save_custom_user_profile_fields');
Lorsqu’un utilisateur a ajouté, je ne peux pas obtenir le numéro d’index précédemment enregistré dans le champ. Il en génère un autre et s’affiche à nouveau. Comme je ne suis pas expert en la matière, quelqu’un pourrait-il m’aider ?
Merci d’avance
Solution n°1 trouvée
Vous étiez sur la bonne voie pour résoudre le problème, mais vous avez commis des erreurs.
Vous pouvez utiliser le code de travail ci-dessous :
Création de champs
add_action( 'user_new_form', 'bks_add_student_reg_number_field' );
add_action( 'edit_user_profile', 'bks_add_student_reg_number_field' );
add_action( 'show_user_profile', 'bks_add_student_reg_number_field' );
function bks_add_student_reg_number_field( $user ) {
?>
<h3><?php _e("Extra profile information", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="student_reg_number"><?php _e("Student Registration Number"); ?></label></th>
<td>
<?php if (is_object($user)) { ?>
<input type="text" name="student_reg_number" id="student_reg_number" value="<?php echo esc_attr( get_the_author_meta( 'student_reg_number', $user->ID )); ?>" class="regular-text" readonly disabled="disabled"/><br />
<?php } else { ?>
<input type="text" name="student_reg_number" id="student_reg_number" class="regular-text" /><br />
<span class="description"><?php _e("Please enter Student registration number."); ?></span>
<?php } ?>
</td>
</tr>
</table>
<?php }
Cela crée une option de champ lors de la génération d’un nouvel utilisateur et du formulaire de modification.
- Le champ n’est activé que lorsqu’un nouvel utilisateur est créé. Si l’utilisateur enregistré a déjà une valeur, la valeur sera affichée sans accès pour la modifier.
Enregistrer la valeur du champ
add_action( 'user_register', 'bks_student_reg_number_field' );
function bks_student_reg_number_field($user_id) {
// You can maybe add checks here whch would determine if the users role is customer
// or not or maybe validate the number.
if(!current_user_can('manage_options'))
return false;
$reg_value = get_user_meta($user_id, 'student_reg_number', true);
if (isset( $_POST['student_reg_number']) && $_POST['student_reg_number'] !== $reg_value) {
update_user_meta($user_id, 'student_reg_number', $_POST['student_reg_number'].'-'.$user_id);
}
}
Seul user_register
le crochet est utilisé pour empêcher la mise à jour lors de la modification du profil.
Vous pouvez voir le user_id ajouté avec un -
devant dans le champ et le champ est en lecture seule et désactivé.
Si vous souhaitez que l’utilisateur puisse également modifier l’identifiant après son inscription, alors. faites ce qui suit.
- Ajouter
profile_update
un crochet.add_action( 'profile_update', 'bks_student_reg_number_field' );
ainsi que le code s’exécute également lorsque vous mettez à jour l’utilisateur.- Supprimer
readonly
etdisabled
attribuer du formulaire.
Le code est TESTÉ et FONCTIONNE .
0 commentaire