WordPress技巧分享:作为一名WordPress开发者或网站管理员,你是否曾为创建大量测试用户而感到繁琐?在开发会员网站、测试权限功能或进行压力测试时,手动一个个添加用户、设置密码和邮箱,无疑是浪费时间且容易出错的重复性劳动。本文地质网老白给出一段简单的代码,彻底告别这个烦恼。让你在后台一键批量生成测试用户,极大提升工作效率。

核心功能说明
这段代码的核心目标是为WordPress后台增加一个“快速添加测试用户”的功能入口。它具备以下特点:
- 无缝集成:在WordPress仪表盘的“用户”菜单下,自动生成一个名为“快速添加测试用户”的子页面,操作入口清晰直观。
- 极简操作:你只需要在一个文本框中,输入纯数字的用户名列表(每行一个)
修改教程
版本一(不带用户名)
functions.php(主题函数文件),添加代码
/**
* 快速添加测试用户-https://www.dzw6.com/.35123html
*/
function wpturbo_add_test_user_submenu_page() {
add_submenu_page(
'users.php', // 父级菜单的 slug (用户)
'快速添加测试用户', // 页面标题
'快速添加测试用户', // 菜单标题
'create_users', // 权限要求 (需要有创建用户的权限)
'wpturbo-add-test-users',
'wpturbo_render_test_user_page' // 用于渲染页面内容的回调函数
);
}
add_action('admin_menu', 'wpturbo_add_test_user_submenu_page');
/**
* 渲染“快速添加测试用户”页面内容的回调函数
*/
function wpturbo_render_test_user_page() {
?>
<div class="wrap">
<h1>快速添加测试用户</h1>
<p>在下方文本框中输入纯数字的用户名,每行一个。系统将自动为每个用户设置密码为用户名本身,邮箱为 <code>{用户名}@qq.com</code>。</p>
<?php
// 检查表单是否已提交,并验证 nonce 以确保安全性
if (isset($_POST['wpturbo_submit']) && check_admin_referer('wpturbo_create_test_users_nonce')) {
$usernames_input = $_POST['usernames'];
// 使用正则表达式分割字符串,兼容所有类型的换行符
$usernames_raw = preg_split('/\r\n|\r|\n/', $usernames_input);
// 移除每行首尾的空白字符(如空格、制表符)
$usernames_trimmed = array_map('trim', $usernames_raw);
$created_users = [];
$error_messages = [];
foreach ($usernames_trimmed as $username) {
// 【核心修复】使用正则表达式移除所有类型的空白字符(包括不间断空格等隐藏字符)
// \s+ 匹配一个或多个空白字符,u 修饰符支持UTF-8/Unicode
$username = preg_replace('/\s+/', '', $username);
// 如果清理后用户名为空(例如,原行只有空格),则跳过
if (empty($username)) {
continue;
}
// 1. 验证用户名是否为纯数字
if (!is_numeric($username)) {
$error_messages[] = "用户名 '<strong>{$username}</strong>' 无效:必须是纯数字。";
continue;
}
// 2. 检查用户名是否已存在
if (username_exists($username)) {
$error_messages[] = "用户名 '<strong>{$username}</strong>' 已存在。";
continue;
}
$email = $username . '@qq.com';
$password = $username;
// 3. 检查邮箱是否已被使用
if (email_exists($email)) {
$error_messages[] = "邮箱 '<strong>{$email}</strong>' 已被使用。";
continue;
}
// 4. 创建用户
$user_id = wp_create_user($username, $password, $email);
// 5. 检查创建结果
if (is_wp_error($user_id)) {
$error_messages[] = "创建用户 '<strong>{$username}</strong>' 时发生未知错误:" . $user_id->get_error_message();
} else {
$created_users[] = $username;
}
}
// 显示成功创建的用户列表
if (!empty($created_users)) {
echo '<div class="notice notice-success is-dismissible"><h3>成功创建以下用户:</h3><ul>';
foreach ($created_users as $user) {
echo '<li>用户名: <strong>' . esc_html($user) . '</strong>, 密码: <strong>' . esc_html($user) . '</strong>, 邮箱: <strong>' . esc_html($user) . '@qq.com</strong></li>';
}
echo '</ul></div>';
}
// 显示处理过程中遇到的错误
if (!empty($error_messages)) {
echo '<div class="notice notice-error"><h3>处理过程中发生以下错误:</h3><ul>';
foreach ($error_messages as $msg) {
// 允许在错误信息中使用 <strong> 等基本标签
echo '<li>' . wp_kses($msg, ['strong' => []]) . '</li>';
}
echo '</ul></div>';
}
}
?>
<form method="post" action="">
<table class="form-table" role="presentation">
<tbody>
<tr>
<th scope="row">
<label for="usernames">用户名列表</label>
</th>
<td>
<textarea name="usernames" id="usernames" class="large-text" rows="15" placeholder="1 2 3 1001 1002"></textarea>
<p class="description">每行输入一个纯数字的用户名。例如,输入 "1" 将创建用户名为 "1",密码为 "1",邮箱为 "1@qq.com" 的用户。</p>
</td>
</tr>
</tbody>
</table>
<?php
// 生成一个安全的 nonce 字段,用于防止 CSRF 攻击
wp_nonce_field('wpturbo_create_test_users_nonce');
// 显示提交按钮
submit_button('批量创建用户', 'primary', 'wpturbo_submit');
?>
</form>
</div>
<?php
}
版本二(带用户名)
functions.php
(主题函数文件)添加代码
/**
* 快速添加测试用户-https://www.dzw6.com/.35123html
* 修改版:支持 user_login 和 display_name 两行输入
*/
function wpturbo_add_test_user_submenu_page() {
add_submenu_page(
'users.php', // 父级菜单的 slug (用户)
'快速添加测试用户', // 页面标题
'快速添加测试用户', // 菜单标题
'create_users', // 权限要求 (需要有创建用户的权限)
'wpturbo-add-test-users',
'wpturbo_render_test_user_page' // 用于渲染页面内容的回调函数
);
}
add_action('admin_menu', 'wpturbo_add_test_user_submenu_page');
function wpturbo_render_test_user_page() {
?>
<div class="wrap">
<h1>快速添加测试用户</h1>
<p>在下方文本框中输入用户信息,格式为:第一行为纯数字用户名,第二行为显示名,每组之间用一个或多个空行隔开。</p>
<?php
if (isset($_POST['wpturbo_submit']) && check_admin_referer('wpturbo_create_test_users_nonce')) {
$user_input = $_POST['usernames'];
// *** 核心改动 1: 解析新的输入格式 ***
// 1. 先按两个或更多换行符(即空行)分割,得到用户组
$user_groups = preg_split('/rns*rn|rs*r|ns*n/', $user_input);
$created_users = [];
$error_messages = [];
foreach ($user_groups as $group) {
// 2. 对每个组,再按单行换行符分割
$parts = preg_split('/rn|r|n/', $group);
$parts = array_map('trim', $parts); // 清理每行前后的空格
$parts = array_filter($parts); // 移除组内可能存在的空元素
// 3. 验证每组是否包含且仅包含两行数据
if (count($parts) !== 2) {
$error_messages[] = "输入格式错误:每组数据必须包含两行(用户名和显示名),并用空行隔开。以下输入无法解析:<pre>" . esc_html($group) . "</pre>";
continue;
}
$user_login = $parts[0];
$display_name = $parts[1];
// 4. 验证数据有效性
if (empty($user_login) || !is_numeric($user_login)) {
$error_messages[] = "用户名 '<strong>{$user_login}</strong>' 无效:必须是纯数字且不能为空。";
continue;
}
if (empty($display_name)) {
$error_messages[] = "对于用户名 '<strong>{$user_login}</strong>',其显示名不能为空。";
continue;
}
if (username_exists($user_login)) {
$error_messages[] = "用户名 '<strong>{$user_login}</strong>' 已存在。";
continue;
}
$email = $user_login . '@qq.com';
$password = $user_login;
if (email_exists($email)) {
$error_messages[] = "邮箱 '<strong>{$email}</strong>' 已被使用。";
continue;
}
// 5. 创建用户
$user_id = wp_create_user($user_login, $password, $email);
if (is_wp_error($user_id)) {
$error_messages[] = "创建用户 '<strong>{$user_login}</strong>' 时发生未知错误:" . $user_id->get_error_message();
} else {
// *** 核心改动 2: 创建用户后,更新其 display_name ***
wp_update_user([
'ID' => $user_id,
'display_name' => $display_name,
]);
// 将成功创建的用户信息存入数组,用于后续显示
$created_users[] = [
'login' => $user_login,
'display_name' => $display_name,
'password' => $password,
'email' => $email
];
}
}
// 显示成功创建的用户列表
if (!empty($created_users)) {
echo '<div class="notice notice-success is-dismissible"><h3>成功创建以下用户:</h3><ul>';
foreach ($created_users as $user) {
echo '<li>用户名: <strong>' . esc_html($user['login']) . '</strong>, 显示名: <strong>' . esc_html($user['display_name']) . '</strong>, 密码: <strong>' . esc_html($user['password']) . '</strong>, 邮箱: <strong>' . esc_html($user['email']) . '</strong></li>';
}
echo '</ul></div>';
}
// 显示错误信息
if (!empty($error_messages)) {
echo '<div class="notice notice-error"><h3>处理过程中发生以下错误:</h3><ul>';
foreach ($error_messages as $msg) {
echo '<li>' . $msg . '</li>';
}
echo '</ul></div>';
}
}
?>
<form method="post" action="">
<table class="form-table" role="presentation">
<tbody>
<tr>
<th scope="row">
<label for="usernames">用户信息列表</label>
</th>
<td>
<textarea name="usernames" id="usernames" class="large-text" rows="15" placeholder="145 清风明月 146 朗朗乾坤"></textarea>
<!-- *** 核心改动 3: 更新了提示文字 *** -->
<p class="description">每两行为一组,第一行输入纯数字的用户名,第二行输入显示名。组与组之间用空行隔开。例如:</p>
<p class="description"><code>145</code><br><code>清风明月</code><br><br><code>146</code><br><code>朗朗乾坤</code></p>
</td>
</tr>
</tbody>
</table>
<?php
wp_nonce_field('wpturbo_create_test_users_nonce');
submit_button('批量创建用户', 'primary', 'wpturbo_submit');
?>
</form>
</div>
<?php
}
WordPress仪表盘, “用户” 菜单,就能看到“快速添加测试用户”
点击文末标签阅读更多WordPress优化教程。





