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>';
}
?>