it-swarm.com.de

generieren Sie eine eindeutige Nummer, wenn Sie einen Benutzer registrieren

Ich weiß, dass die Datenbank userID, username enthält, aber ich möchte eine formatierte und eindeutige Nummer für die Verwendung in der physischen Welt.

Beispiel: "2014xxxx" 201414: Jahr, xxxx: Wird bei der Registrierung eines Benutzers zufällig generiert.

Ist es möglich?

Was ist der einfachste und schnellste Weg, wenn möglich?

1
pakc1202

Dies wird tun, was Sie wollen, und beide Funktionen sollten in Ihrer Datei fucntions.php abgelegt werden.

Die Funktion my_random_string() akzeptiert Argumente, sodass Sie Daten vor/nach der Zeichenfolge hinzufügen sowie die Länge der Zeichenfolge und die Zeichen, die zum Generieren der Zeichenfolge verwendet werden, ändern können.

/**
 * Generate a string of random characters
 *
 * @param array $args   The arguments to use for this function
 * @return string|null  The random string generated by this function (only 'if($args['echo'] === false)')
 */
function my_random_string($args = array()){

    $defaults = array(  // Set some defaults for the function to use
        'characters'    => '0123456789',
        'length'        => 10,
        'before'        => '',
        'after'         => '',
        'echo'          => false
    );
    $args = wp_parse_args($args, $defaults);    // Parse the args passed by the user with the defualts to generate a final '$args' array

    if(absint($args['length']) < 1) // Ensure that the length is valid
        return;

    $characters_count = strlen($args['characters']);    // Check how many characters the random string is to be assembled from
    for($i = 0; $i <= $args['length']; $i++) :          // Generate a random character for each of '$args['length']'

        $start = mt_Rand(0, $characters_count);
        $random_string.= substr($args['characters'], $start, 1);

    endfor;

    $random_string = $args['before'] . $random_string . $args['after']; // Add the before and after strings to the random string

    if($args['echo']) : // Check if the random string shoule be output or returned
        echo $random_string;
    else :
        return $random_string;
    endif;

}

Hier haben Sie die Funktion my_on_user_register(), die bei jedem Generieren eines neuen Benutzers verknüpft wird und einen Eintrag in die Tabelle wp_usermeta für den Schlüssel random_number hinzufügt. Natürlich können Sie den Namen dieses Schlüssels nach Bedarf ändern.

Ich würde auch empfehlen, dass Sie sich den Codex für die Aktion user_register ansehen.

/**
 * Upon user registration, generate a random number and add this to the usermeta table
 *
 * @param required integer $user_id The ID of the newly registerd user
 */
add_action('user_register', 'my_on_user_register');
function my_on_user_register($user_id){

    $args = array(
        'length'    => 6,
        'before'    => date("Y")
    );
    $random_number = my_random_string($args);
    update_user_meta($user_id, 'random_number', $random_number);

}

Bearbeiten

Gemäß Ihrem Kommentar generiert die Rückruffunktion my_on_user_register() jetzt eine Zahl, die mit dem aktuellen Jahr beginnt und dann mit einer zufälligen 6-stelligen Zeichenfolge (nur aus Zahlen) endet.

Sie können auch die unten stehende my_extra_user_profile_fields() Callback-Funktion verwenden, um die Zufallszahl auf der Benutzerprofilseite auszugeben. Beachten Sie jedoch, dass der Benutzer mit diesem Code diese Nummer nicht bearbeiten kann.

/**
 * Output additional data to the users profile page
 *
 * @param WP_User $user Object properties for the current user that is being displayed
 */
add_action('show_user_profile', 'my_extra_user_profile_fields');
add_action('edit_user_profile', 'my_extra_user_profile_fields');
function my_extra_user_profile_fields($user){

    $random_number = get_the_author_meta('random_number', $user->ID);
?>
    <h3><?php _e('Custom Properties'); ?></h3>

    <table class="form-table">
        <tr>
            <th><label for="address"><?php _e('Random Number'); ?></label></th>
            <td><?php echo $random_number; ?></td>
        </tr>
    </table>
<?php
}
3
David Gard