Notez que cet article a été écrit il y a plus de 3 ans, mais il n'est pas forcément obsolète.
On peut avoir besoin dans wordPress de générer un nicename unique lorsque l’on importe ou que l’on ajoute un utilisateur. Voici une petite fonction qui assainit une chaîne (par exemple le login de l’utilisateur) et qui cherche si la chaîne générée est unique. Si elle ne l’est pas, on ajoute récursivement un suffixe en commençant par -1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php function xbs_generate_unique_nicename( $username ) { $args = array( 'search' => sanitize_title( $username ), 'search_columns' => array( 'user_nicename' ) ); // Query for user $user_url_exists = new WP_User_Query( $args ); $results = $user_url_exists->get_results(); // If nicename is found, check for new one if( ! empty( $results ) ) { $i = substr( sanitize_title( $username ), intval( strrpos( sanitize_title( $username ), '-' ) ) + 1 ); if( is_numeric( $i ) ) { $i++; $username = substr( $username, 0, strrpos( $username, '-' ) ); $found_name = "{$username}-{$i}"; } else { $found_name = "{$username}-1"; } $sanitize_name = sanitize_title( $found_name ); // Return and recusion return xbs_generate_unique_user_nicename( $sanitize_name ); } else { return sanitize_title( $username ); } } ?> |
Et hop, une petite fonction sympa pour générer un nicename unique à insérer dans la table wp_users, champ user_nicename.