Create, Update, Delete Users
User management is one of the highest-impact WP-CLI skills. You can onboard staff, reset credentials, assign roles, and safely offboard users in seconds, even when wp-admin is inaccessible.
Understanding User CRUD in WP-CLI
WP-CLI gives direct control over user records and role assignments from the terminal. Core user workflows include:
- Create users for onboarding and site setup
- Update user fields (email, password, display name, URL)
- Delete users safely while reassigning content
- Adjust permissions with role commands
- Automate repetitive operations in scripts
Prerequisites
Before making user changes:
# Confirm you're in the correct WordPress install
wp core is-installed
# Review existing users
wp user list --fields=ID,user_login,user_email,roles --format=table
# Recommended before bulk changes
wp db export "backup-users-$(date +%Y%m%d-%H%M).sql"
For delete or role changes at scale, run on staging first and keep a fresh database backup.
Create Users
Create a Single User
# Create editor with generated password
wp user create editor1 editor1@example.com --role=editor
# Create admin with explicit password
wp user create ops-admin ops@example.com --role=administrator --user_pass='StrongPassword!42'
Create with Additional Profile Fields
wp user create sarah sarah@example.com \
--role=author \
--first_name="Sarah" \
--last_name="Nolan" \
--display_name="Sarah Nolan" \
--user_url="https://example.com/team/sarah"
Generate Bulk Test Users
# Generate 25 subscribers for staging/testing
wp user generate --count=25 --role=subscriber
Update Users
Update Common User Fields
# Update by ID
wp user update 12 --user_email='new-email@example.com'
# Update by login
wp user update john --display_name='John Carter'
# Rotate password
wp user update john --user_pass='N3wStrongPass#2026'
Promote or Demote Roles
# Replace current role with a new role
wp user set-role john administrator
# Add a secondary role
wp user add-role john shop_manager
# Remove a secondary role
wp user remove-role john shop_manager
Use set-role to replace a role, and add-role / remove-role when you need multi-role control.
Delete Users Safely
Delete and Reassign Content (Recommended)
# Reassign all content from 'jane' to user ID 1
wp user delete jane --reassign=1
Delete Multiple Users
# Delete multiple users and reassign content
wp user delete test1 test2 test3 --reassign=1
Delete Without Reassign (Destructive)
# Permanently removes associated content
wp user delete spam-user
--reassign Whenever PossibleDeleting an author without reassignment can remove or orphan content depending on context. Always choose a valid owner first.
High-Value User Commands
| Task | Command | Why It Matters |
|---|---|---|
| Create user | wp user create LOGIN EMAIL --role=ROLE | Fast onboarding |
| Update user | wp user update ID_OR_LOGIN_OR_EMAIL --user_email=EMAIL | Correct account data |
| Reset password | wp user update USER --user_pass='PASS' | Incident response |
| Delete user | wp user delete USER --reassign=ID | Safe offboarding |
| Check user | wp user get USER | Quick audit/details |
| List by role | wp user list --role=administrator | Security and governance |
Real-World Scenarios
Scenario 1: New Site Team Onboarding
# Create baseline team members
wp user create owner owner@example.com --role=administrator --user_pass='Owner!Pass2026'
wp user create editor editor@example.com --role=editor
wp user create writer writer@example.com --role=author
# Verify
wp user list --fields=user_login,user_email,roles --format=table
Scenario 2: Emergency Credential Rotation
# Rotate passwords for sensitive accounts
wp user update admin --user_pass='Admin!Rotate2026'
wp user update ops-admin --user_pass='Ops!Rotate2026'
# Confirm users still exist
wp user get admin --field=user_email
wp user get ops-admin --field=user_email
Scenario 3: Offboarding a Content Author
# Move all content to active managing editor (ID 7)
wp user delete former-author --reassign=7
# Confirm deletion
wp user list --field=user_login | grep former-author || echo "User removed"
Scenario 4: Bulk Role Standardization
#!/bin/bash
# set-all-contributors-to-author.sh
for user in $(wp user list --role=contributor --field=user_login); do
wp user set-role "$user" author
done
wp user list --role=author --fields=user_login,roles --format=table
Best Practices
1. Backup Before Bulk Changes
wp db export "backup-before-user-bulk-$(date +%Y%m%d-%H%M).sql"
2. Prefer Principle of Least Privilege
Use subscriber, contributor, author, editor where possible; reserve administrator for trusted operators.
3. Always Reassign Content on Delete
wp user delete old-author --reassign=1
4. Audit Admin Accounts Regularly
wp user list --role=administrator --fields=ID,user_login,user_email --format=table
5. Script Repetitive Operations
Repeatable scripts reduce manual errors during onboarding/offboarding.
Troubleshooting
User Creation Fails
# Check for duplicate login or email
wp user list --fields=user_login,user_email --format=table
# Retry with a unique login/email
wp user create newlogin unique@example.com --role=subscriber
Cannot Update/Delete User
# Verify target user exists
wp user get target-user
# Verify your current WordPress context
wp option get siteurl
Wrong Site in Multisite
# Scope command to the correct subsite
wp --url=subsite.example.com user list --role=administrator
Quick Reference
# Create
wp user create <login> <email> --role=<role>
wp user generate --count=<n> --role=<role>
# Update
wp user update <user> --user_email=<email>
wp user update <user> --user_pass='<new-password>'
wp user set-role <user> <role>
wp user add-role <user> <role>
wp user remove-role <user> <role>
# Delete
wp user delete <user> --reassign=<user-id>
# Verify
wp user get <user>
wp user list --role=administrator --format=table
Comparison: WP-CLI vs wp-admin
| Task | WP-CLI | wp-admin |
|---|---|---|
| Create 10 users | Seconds (scriptable) | Manual and slow |
| Rotate passwords | Fast, batch-friendly | One-by-one |
| Delete + reassign | One command | Multi-step UI flow |
| Works when wp-admin is down | Yes | No |
| Repeatable automation | Excellent | Limited |
WP-CLI is the fastest and most reliable path for operational user management, especially for bulk changes, incident response, and scripted workflows.
Next Steps
- Audit and export users securely: Listing & Authentication
- Handle advanced account operations: Additional User Operations
- Apply the same patterns to content: Content Management