A Script useful for swipe USENAME (email) to real name in the database
The code are in french but it will allow youself to see before the chang, MAKE A BACKUP UP FIRST but it work really well,
<?php
/**
- PAGE TEMPORAIRE DE CORRECTION DES IDENTIFIANTS WORDPRESS
- =========================================================
- INSTALLATION :
-
- Fais une SAUVEGARDE de ta base de donnΓ©es avant toute chose
- (cPanel > phpMyAdmin > Exporter, ou l'outil de sauvegarde de ton hΓ©bergeur).
-
- Uploade ce fichier Γ la RACINE de ton site WordPress
- (le mΓͺme dossier que wp-load.php, wp-config.php, etc.)
- Par exemple via le File Manager de cPanel.
-
- Connecte-toi Γ wp-admin dans ton navigateur (obligatoire, ce script
- vΓ©rifie que tu es bien administrateur).
-
- Va sur : https://reseauunderground.com/fix-usernames-admin.php
-
- Clique d'abord sur "Simulation" pour voir les changements prΓ©vus,
- SANS rien modifier.
-
- Si le rΓ©sultat te convient, clique sur "Appliquer".
-
- β οΈ SUPPRIME CE FICHIER du serveur une fois terminΓ© β il ne doit
- JAMAIS rester en ligne, car il pourrait Γͺtre visible par n'importe qui
- qui viserait Γ accΓ©der au dashboard administrateur.
*/
require_once DIR . '/wp-load.php';
// SΓ©curitΓ© : uniquement pour les administrateurs connectΓ©s
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( 'Accès refusé. Connecte-toi en tant qu\'administrateur sur wp-admin, puis recharge cette page.' );
}
$action = isset( $_POST['action'] ) ? sanitize_text_field( $_POST['action'] ) : '';
$dry_run = ( $action !== 'apply' );
$ran = ( $action === 'simulate' || $action === 'apply' );
$results = [];
if ( $ran ) {
$users = get_users( [
'search' => '@',
'search_columns' => [ 'user_login' ],
'number' => -1,
] );
foreach ( $users as $user ) {
$old_login = $user->user_login;
$display_name = trim( $user->display_name );
if ( empty( $display_name ) ) {
$results[] = [ 'status' => 'ignore', 'msg' => "ID {$user->ID} β pas de nom affichΓ©, impossible de gΓ©nΓ©rer un identifiant ({$old_login})" ];
continue;
}
// Nettoie les accents, dΓ©coupe en mots, met une majuscule au dΓ©but
// de chaque mot, puis assemble sans sΓ©parateur (ex: "Abdoulaye Gassama Diaby" -> "AbdoulayeGassamaDiaby")
$clean = remove_accents( $display_name );
$clean = preg_replace( '/[^a-zA-Z0-9\s]+/', ' ', $clean ); // enlève tout sauf lettres/chiffres/espaces
$words = preg_split( '/\s+/', trim( $clean ) );
$words = array_filter( $words ); // enlève les entrées vides
$words = array_map( function( $w ) {
return ucfirst( strtolower( $w ) );
}, $words );
// Retire les mots dupliquΓ©s consΓ©cutifs (ex: "Jez Jez Muertadel Muertadel" -> "Jez Muertadel")
$deduped = [];
foreach ( $words as $w ) {
if ( empty( $deduped ) || strtolower( end( $deduped ) ) !== strtolower( $w ) ) {
$deduped[] = $w;
}
}
$base = implode( ' ', $deduped );
if ( empty( $base ) ) {
$results[] = [ 'status' => 'ignore', 'msg' => "ID {$user->ID} β nom illisible aprΓ¨s nettoyage ({$old_login})" ];
continue;
}
$new_login = $base;
$i = 1;
while ( username_exists( $new_login ) && $new_login !== $old_login ) {
$i++;
$new_login = $base . $i;
}
if ( $new_login === $old_login ) {
$results[] = [ 'status' => 'ok', 'msg' => "ID {$user->ID} β dΓ©jΓ correct ({$old_login})" ];
continue;
}
if ( $dry_run ) {
$results[] = [ 'status' => 'change', 'msg' => "ID {$user->ID} : {$old_login} β {$new_login}" ];
} else {
global $wpdb;
$wpdb->update(
$wpdb->users,
[ 'user_login' => $new_login ],
[ 'ID' => $user->ID ]
);
clean_user_cache( $user->ID );
$results[] = [ 'status' => 'applied', 'msg' => "ID {$user->ID} : {$old_login} β {$new_login} β
appliquΓ©" ];
}
}
}
?>
<!DOCTYPE html>
Correction des identifiants WordPress body { font-family: -apple-system, Arial, sans-serif; max-width: 900px; margin: 40px auto; padding: 0 20px; background: #f5f5f5; } h1 { font-size: 20px; } .box { background: white; padding: 20px; border-radius: 8px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .warning { background: #fff3cd; border: 1px solid #ffc107; padding: 15px; border-radius: 6px; margin-bottom: 20px; } button { padding: 10px 20px; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; margin-right: 10px; } .btn-simulate { background: #2271b1; color: white; } .btn-apply { background: #d63638; color: white; } table { width: 100%; border-collapse: collapse; margin-top: 15px; } td { padding: 6px 8px; border-bottom: 1px solid #eee; font-size: 13px; font-family: monospace; } .change { color: #b26a00; } .applied { color: #0a7d1f; font-weight: bold; } .ignore { color: #999; } .ok { color: #999; } .count { font-weight: bold; }π§ Correction en masse des identifiants WordPress
β οΈ N'oublie pas de supprimer ce fichier du serveur une fois la correction terminΓ©e.Ce script cherche tous les utilisateurs dont l'identifiant (user_login) contient un "@" et propose de le remplacer par un identifiant propre basΓ© sur leur nom affichΓ©.
<form method="post" style="display:inline;">
<input type="hidden" name="action" value="simulate">
<button type="submit" class="btn-simulate">1. Lancer la simulation (aucune modification)</button>
</form>
<form method="post" style="display:inline;" onsubmit="return confirm('Confirmes-tu vouloir APPLIQUER les changements ? Cette action modifie rΓ©ellement la base de donnΓ©es.');">
<input type="hidden" name="action" value="apply">
<button type="submit" class="btn-apply">2. Appliquer les changements (dΓ©finitif)</button>
</form>
<?php if ( $ran ) : ?>
utilisateur(s) analysΓ©(s).
I don't understand a damn thing
