WordPress : Comment créer un ID utilisateur unique dans WordPress

Publié par Jean-Michel le

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.

nouveau champ utilisateur

  • 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_registerle crochet est utilisé pour empêcher la mise à jour lors de la modification du profil.

Champ enregistré

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_updateun 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 readonlyet disabledattribuer du formulaire.

Le code est TESTÉ et FONCTIONNE .

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *