A lightweight developer plugin for generating realistic fake WordPress users during testing.
- Bulk generation — create 1–200 users per batch
- Role selection — any registered WordPress role
- Username prefix — namespace your test accounts (e.g.
test_alice_smith_1234) - Password options — fixed
passwordor a strong random password per user - Tagged users — every generated user is tagged with
_user_factory_generatedmeta so they can be found and cleaned up without touching real accounts - One-click cleanup — delete all factory users from the Danger Zone panel
- Uninstall hook — optionally purge generated users on plugin removal
- Upload the
user-factory/folder towp-content/plugins/ - Activate via Plugins → Installed Plugins
- Navigate to Users → User Factory
| Field | Description |
|---|---|
| Count | How many users to create (1–200) |
| Role | WordPress role assigned to each user |
| Username prefix | Optional string prepended to every username |
| Password | password (easy for manual testing) or a random secure password |
Use the Danger Zone panel on the plugin page to remove every user tagged as factory-generated. This does not affect real users.
You can call the factory class directly in your own code:
$factory = new User_Factory();
$result = $factory->generate([
'count' => 10,
'role' => 'editor',
'prefix' => 'staging',
'random_pw' => true,
]);
// $result = [
// 'created' => 10,
// 'skipped' => 0,
// 'errors' => [],
// 'users' => [ ['id', 'login', 'email', 'name', 'role', 'password', 'edit_url'], … ]
// ]$test_users = get_users([
'meta_key' => '_user_factory_generated',
'meta_value' => true,
]);user-factory/
├── user-factory.php # Plugin bootstrap
├── includes/
│ ├── class-user-factory.php # Core generation + deletion logic
│ ├── class-user-factory-admin.php # Admin menu + page UI
│ └── class-user-factory-ajax.php # AJAX action handlers
└── assets/
├── admin.css # Admin page styles
└── admin.js # Admin page JavaScript
- All AJAX endpoints require a valid nonce (
user_factory_nonce) - Capability check:
create_usersrequired for all actions - Count is capped server-side at 200 per batch
- All user input is sanitized before use
GPL-2.0-or-later