Skip to main content

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 :
    1. Fais une SAUVEGARDE de ta base de donnΓ©es avant toute chose
  • (cPanel > phpMyAdmin > Exporter, ou l'outil de sauvegarde de ton hΓ©bergeur).
    1. 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.
    1. Connecte-toi Γ  wp-admin dans ton navigateur (obligatoire, ce script
  • vΓ©rifie que tu es bien administrateur).
    1. Va sur : https://reseauunderground.com/fix-usernames-admin.php
    1. Clique d'abord sur "Simulation" pour voir les changements prΓ©vus,
  • SANS rien modifier.
    1. Si le rΓ©sultat te convient, clique sur "Appliquer".
    1. ⚠️ 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).

<td class="">

Bryan William

I don't understand a damn thing