wp-cli/super-admin-command
WP-CLI command package for WordPress multisite to manage super admins. List current super admin users, grant privileges to one or more users, or revoke them via wp super-admin list/add/remove, with multiple output formats supported.
Verify WP-CLI Access: Ensure you have WP-CLI installed and can access your WordPress multisite installation:
wp --info
Confirm wp-cli/super-admin-command is listed under "Installed Packages."
Check Multisite Status: Run:
wp option get blog_id
A value greater than 1 confirms a multisite setup.
First Command: List existing super admins:
wp super-admin list
Outputs a list of usernames with super-admin privileges.
wp help super-admin for syntax and options.--format=<format> (e.g., --format=json) for programmatic use:
wp super-admin list --format=json
wp super-admin add user@example.com).Automate Onboarding: Grant super-admin access to a new team member during deployment:
wp super-admin add new_team_member@example.com
Verify:
wp super-admin list --format=table
Bulk Operations: Add multiple users in a single command:
wp super-admin add user1@example.com user2@example.com
Remove users by ID or login:
wp super-admin remove 123 456
Integration with Scripts:
Use --format=json for programmatic parsing:
wp super-admin list --format=json | jq '.users[] | select(.id == 1)'
Example: Filter super admins in a Bash script:
SUPER_ADMINS=$(wp super-admin list --format=ids)
for ID in $SUPER_ADMINS; do
echo "User $ID has super-admin access"
done
CI/CD Pipelines: Automate super-admin assignment during site provisioning (e.g., GitHub Actions):
- name: Grant super-admin
run: wp super-admin add deploy-bot@example.com
WP-CLI in Laravel Artisan:
Use wp-cli/wp-cli-bundle to integrate WP-CLI with Laravel:
composer require wp-cli/wp-cli-bundle
Configure in config/wp-cli.php:
'commands' => [
'super-admin' => [
'list' => 'wp super-admin list --format=json',
'add' => 'wp super-admin add {user}',
],
],
Call from Laravel:
$superAdmins = Artisan::call('wp:super-admin:list');
$output = json_decode($superAdmins->output(), true);
Dynamic User Management: Sync Laravel users with WordPress super admins:
public function syncSuperAdmins()
{
$laravelAdmins = User::where('role', 'admin')->pluck('email');
foreach ($laravelAdmins as $email) {
Artisan::call('wp:super-admin:add', ['user' => $email]);
}
}
Event-Driven Workflows: Trigger super-admin changes on Laravel events (e.g., user registration):
UserRegistered::dispatch(function ($user) {
if ($user->is_team_lead) {
Artisan::call('wp:super-admin:add', ['user' => $user->email]);
}
});
wp super-admin add invalid_user@example.com || echo "Failed to add user"
--dry-run if supported by future updates).wp super-admin list --format=json > super_admins.json
Multisite Requirement:
wp super-admin list returns no output on single-site installs.wp option get blog_id. Use --network flag if needed (though not natively supported; check WP-CLI version).User Ambiguity:
wp super-admin add user@example.com fails if multiple users share the email.--user-id or --user-login for precision:
wp super-admin add --user-id=123
Permissions:
wp user login to switch roles temporarily.Output Parsing:
--format=json may include metadata not documented.wp super-admin list --format=json | jq
Verbose Mode: Enable debug output for troubleshooting:
WP_CLI_DEBUG=1 wp super-admin add user@example.com
Check WP-CLI Version:
Ensure compatibility with wp --version. Update if using an old version:
wp package update wp-cli/super-admin-command
Database Locks:
wp db optimize if locks persist.Default Formats:
--format=ids outputs raw IDs (e.g., 1 2 3), not JSON arrays.IFS=' ' read -ra ADMINS <<< "$(wp super-admin list --format=ids)"
Case Sensitivity: User logins are case-sensitive in WordPress. Ensure exact matches:
wp super-admin add AdminUser # Fails if user is "adminuser"
Custom Commands: Extend functionality by creating a custom WP-CLI command:
// bootstrap.php
WP_CLI::add_command('custom-super-admin', 'CustomSuperAdminCommand');
class CustomSuperAdminCommand extends \WP_CLI_Command {
public function __invoke($args, $assoc_args) {
$superAdmins = \WP_CLI::runcommand('super-admin list --format=json');
// Custom logic here
}
}
Hooks: Trigger actions when super-admin roles change (requires custom code):
add_action('wpcli_super_admin_add', function($user_id) {
// Log or notify when a user gains super-admin access
});
Pre/Post Commands:
Use wp-cli/wp-cli-bundle to wrap commands with Laravel logic:
// app/Console/Commands/WpSuperAdmin.php
protected function handle()
{
$output = Artisan::call('wp:super-admin:list', ['--format' => 'json']);
$this->logSuperAdmins(json_decode($output->output(), true));
}
Backup First:
Always back up the wp_usermeta table before bulk operations:
wp db export --tables=wp_usermeta backup.sql
Audit Trails:
Combine with wp user log to track changes:
wp super-admin add user@example.com && wp user log --user=user@example.com
Performance:
For large multisites, use --batch (if supported in future updates) to reduce memory usage:
wp super-admin list --batch=50
Local Development: Test changes in a local multisite environment:
wp scaffold multisite --title="Test Network" --slug="test" --admin_user=admin --admin_password=password
How can I help you explore Laravel packages today?