





Let’s start a journey that brings your vision to life! 40 hours proof of concept for $2,500. Send your brief →

这是一个小众功能,但是如果当你刚好需要时这能帮你解决很大的麻烦。
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;
}
}
?>
bulk_rename_users.php)https://yoursite.com/bulk_rename_users.php)注:执行前请务必备份数据库,并在测试环境先验证效果!