wordpress批量修改用户名、用户昵称、显示名

这是一个小众功能,但是如果当你刚好需要时这能帮你解决很大的麻烦。

该项目的作用

1.当网站有很多恶意注册用户的时候,用户名可能会很长,也可能是一些外链域名,或者是一些推广广告词,更甚者可能是一些高危违禁词,如“**币”等。这些内容使得网站看着很不正规,甚至可能会被搜索引擎惩罚等风险。

2.你想给网站用户名添加某些前缀或者后缀用于区分用户的时候。

功能效果

功能代码

<?php
require_once('wp-load.php');

global $wpdb;

// 配置选项
$config = array(
    'min_username_length' => 15,  // 最小用户名长度,大于这个长度的才处理
    'min_keep_chars' => 2,        // 最少保留字符数
    'max_keep_chars' => 5,        // 最多保留字符数
    'add_random_suffix' => true,  // 是否添加随机后缀
    'suffix_length' => 3,         // 随机后缀长度
    'remove_existing_prefix' => true, // 移除现有的"user_"前缀
);

// 获取需要处理的用户
$users = $wpdb->get_results($wpdb->prepare(
    "SELECT ID, user_login, display_name FROM {$wpdb->users} WHERE LENGTH(user_login) > %d",
    $config['min_username_length']
));

echo "开始处理 " . count($users) . " 个用户<br><br>";

$processed_count = 0;

foreach ($users as $user) {
    echo "处理用户: ID={$user->ID}, 当前用户名={$user->user_login}, 当前显示名={$user->display_name}<br>";
    
    // 生成新用户名(确保没有"user_"前缀)
    $new_username = generate_clean_username($user->user_login, $config);
    
    echo "生成的新用户名: {$new_username}<br>";
    
    // 确保唯一性
    $new_username = ensure_unique_username($new_username);
    echo "确保唯一后的用户名: {$new_username}<br>";
    
    // 执行更新
    $result = update_user_data($user->ID, $user->user_login, $new_username);
    
    if ($result) {
        $processed_count++;
        echo "<strong>✓ 成功更新用户 {$user->ID}</strong><br>";
    } else {
        echo "<strong>✗ 更新用户 {$user->ID} 失败</strong><br>";
    }
    echo "<hr>";
}

echo "<br><strong>处理完成!共成功更新 {$processed_count} 个用户</strong>";

/**
 * 生成干净的用户名(确保没有"user_"前缀)
 */
function generate_clean_username($original_username, $config) {
    // 如果配置要求移除现有前缀,先清理
    if ($config['remove_existing_prefix']) {
        $original_username = preg_replace('/^user_/i', '', $original_username);
    }
    
    $length = strlen($original_username);
    
    // 如果原用户名太短或清理后为空,生成全新用户名
    if ($length <= $config['min_keep_chars'] || empty($original_username)) {
        return generate_random_string(8);
    }
    
    // 随机保留字符
    $keep_chars = rand($config['min_keep_chars'], min($config['max_keep_chars'], $length));
    $all_positions = range(0, $length-1);
    $positions = array_rand($all_positions, $keep_chars);
    
    if (!is_array($positions)) {
        $positions = array($positions);
    }
    
    shuffle($positions);
    
    $new_username = '';
    foreach ($positions as $pos) {
        $new_username .= $original_username[$pos];
    }
    
    // 确保不包含"user"字样
    $new_username = preg_replace('/user/i', '', $new_username);
    
    // 如果清理后为空,生成随机字符串
    if (empty($new_username)) {
        $new_username = generate_random_string(6);
    }
    
    // 添加随机后缀
    if ($config['add_random_suffix']) {
        $suffix = generate_random_string($config['suffix_length']);
        $new_username .= $suffix;
    }
    
    return $new_username;
}

/**
 * 生成随机字符串(仅字母)
 */
function generate_random_string($length = 6) {
    $characters = 'abcdefghijklmnopqrstuvwxyz';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
}

/**
 * 确保用户名唯一
 */
function ensure_unique_username($username) {
    $counter = 1;
    $original_username = $username;
    
    while (username_exists($username)) {
        $username = $original_username . generate_random_string(2);
        $counter++;
        
        // 防止无限循环
        if ($counter > 50) {
            $username = $original_username . '_' . uniqid();
            break;
        }
    }
    
    return $username;
}

/**
 * 更新用户数据 - 增强版本
 */
function update_user_data($user_id, $old_username, $new_username) {
    global $wpdb;
    
    // 开始事务,确保数据一致性
    $wpdb->query('START TRANSACTION');
    
    try {
        // 1. 更新用户名 (user_login)
        $result1 = $wpdb->update(
            $wpdb->users,
            array('user_login' => $new_username),
            array('ID' => $user_id),
            array('%s'),
            array('%d')
        );
        
        if ($result1 === false) {
            throw new Exception('更新user_login失败');
        }
        
        // 2. 更新nickname (user_meta)
        $result2 = update_user_meta($user_id, 'nickname', $new_username);
        if ($result2 === false) {
            throw new Exception('更新nickname失败');
        }
        
        // 3. 更新display_name (users表)
        $result3 = $wpdb->update(
            $wpdb->users,
            array('display_name' => $new_username),
            array('ID' => $user_id),
            array('%s'),
            array('%d')
        );
        
        if ($result3 === false) {
            throw new Exception('更新display_name失败');
        }
        
        // 4. 清理可能存在的旧显示名设置
        delete_user_meta($user_id, 'display_name');
        
        // 5. 记录修改历史
        update_user_meta($user_id, 'original_username', $old_username);
        update_user_meta($user_id, 'username_updated_date', current_time('mysql'));
        
        // 提交事务
        $wpdb->query('COMMIT');
        
        echo "更新详情: user_login={$new_username}, nickname={$new_username}, display_name={$new_username}<br>";
        return true;
        
    } catch (Exception $e) {
        // 回滚事务
        $wpdb->query('ROLLBACK');
        echo "错误: " . $e->getMessage() . "<br>";
        return false;
    }
}
?>

使用说明

  1. 保存上述代码为PHP文件(如bulk_rename_users.php
  2. 上传到WordPress根目录
  3. 在浏览器中访问这个文件(如:https://yoursite.com/bulk_rename_users.php
  4. 执行完成后立即删除该文件

功能特点

  • ✅ 移除统一的”user”前缀
  • ✅ 随机从原用户名保留部分字符
  • ✅ 自动更新Nickname
  • ✅ 自动更新Display name
  • ✅ 确保用户名唯一性
  • ✅ 可配置的随机化选项
  • ✅ 记录修改历史

注:执行前请务必备份数据库,并在测试环境先验证效果!

Leave a Reply

Your email address will not be published. Required fields are marked *

Commonly asked questions and answers

Phone:
+1 (555) 000-0000
Email:
info@mysite.com
你们能提供哪些服务?
wordpress独立站开发:跨境电商独立站、外贸独立站、企业站、行业综合网站、个人IP站,以及各种个性化功能的定制网站,wordpress插件开发等。

shopify独立站开发:shopify跨境独立站主题开发、UI定制修改等。

独立站运营:社媒推广引流、国内广告投放(百度广告、巨量广告等)、海外广告投放、SEO等。

Newsletter subscribe!

Enter your email to unlock an exclusive 10% discount on professional website development tailored to your business needs.

Have more questions?

Let’s schedule a short call to discuss how we can work together and contribute to the success of your project or idea.
this is a cache: 0.00358