Suite à une (petite) faille de sécurité, il m’a fallu modifié les mots de passe de tous mes utilisateurs WordPress…qui sont en très grand nombre. Il était impossible de faire cette tâche à la main.
Ce fichier PHP doit se mettre à la racine de votre site WordPress et sera donc accessible via https://nom-de-domaine/votre-fichier.php.
Le script génère aléatoirement un nouveau mot de passe pour chaque utilisateur. À la fin du traitement, il affiche l’identifiant, le nom, l’email et le nouveau mot de passe de l’utilisateur. Toujours à la fin du traitement, on peut copier/coller la liste dans un tableur afin de pouvoir faire un emailing (Mailchimp, Sendinblue….) aux personnes.
<?PHP require_once("wp-load.php"); function generatePassword() { // Les caractères autorisés $caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'y', "!", "$", "*", "?", ";", ":", 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Y' ); // Longueur du mot de passe $nbChar = 12; $pwdFinal = array(); for($i = 0; $i < $nbChar; $i++){ $pwdFinal[] .= $caracteres[mt_rand(0, count($caracteres) - 1)]; } shuffle($pwdFinal); $pwdFinalShuffle = implode('', $pwdFinal); return $pwdFinalShuffle; } // Récupère la liste des utilisateurs $tabUser = get_users(); foreach ($tabUser as $id => $user) { echo $user->ID; echo ','; echo $user->display_name; echo ','; echo $user->user_email; echo ','; $passWord = generatePassword(); echo $passWord; // Mets à jour le mot de passe de chaque utilisateur $dd = wp_set_password($passWord, $user->ID); echo '<br>'; } ?>