Complete WordPress white-labeling using FREE plugins only - ASE, Branda, White Label CMS, Admin Menu Editor...
Complete WordPress white-labeling system using free plugins to create a professional, branded admin experience without any paid elements.
| Plugin | Purpose | Key Features |
|---|---|---|
| ASE (Admin and Site Enhancements) | Security, admin cleanup | Custom login URL, disable XML-RPC, hide notices, obfuscate authors |
| White Label CMS | Dashboard & menu branding | Setup wizard, custom welcome panel, hide menus by role, import/export |
| Branda (White Labeling) | Login page branding | Custom logo, colors, backgrounds, admin bar logo |
| Admin Menu Editor (optional) | Advanced menu control | Reorder, rename, custom icons, granular permissions |
Access: WordPress Admin β Settings β White Label CMS
White Label CMS has a built-in wizard that walks you through:
/login as URL alias| Feature | Plugin | How |
|---|---|---|
| Custom login page logo | Branda | Upload via Media Library |
| Login background color/image | Branda | Color picker or image upload |
| Login form styling | Branda | Colors, borders, shadows |
| Admin footer text | ASE or Branda | Custom HTML text |
| Admin bar cleanup | ASE | Toggle visibility of items |
| Hide "Howdy" greeting | Branda | Replace with custom text |
| Dashboard widget removal | ASE | Checkbox per widget |
| Custom login URL | ASE | Slug like /client-login |
| Menu organization | Admin Menu Editor | Drag-and-drop |
| WordPress version hiding | ASE | Toggle on/off |
| Admin color scheme | Branda | Custom palette |
| Disable admin notices | ASE | Move to panel or hide |
/client-login or /secure-access/wp-login.phpRecommended slugs:
/client-login
/company-access
/portal
/secure-login
Avoid: /login, /admin, /signin (too common)
Access: Branda β Login Screen
Customize:
Example Configuration:
Logo: /wp-content/uploads/client-logo.png
Logo Width: 300px
Background Color: #1a1a2e
Form Background: #ffffff
Form Border Radius: 8px
Button Color: #e94560
Button Hover: #c73e54
Access: Branda β Admin Area β Admin Bar
Options:
Access: Branda β Admin Area β Howdy Message
Replace with:
Access: Branda β Admin Area β Admin Footer
Custom footer text (HTML supported):
© 2025 [Client Name]. Powered by <a href="https://youragency.com">Your Agency</a>.
Access: Branda β Dashboard β Welcome Widget
Create custom welcome widget with:
Recommended Order for Clients:
| Original | Rename To |
|---|---|
| Posts | News / Blog / Articles |
| Media | Files / Images |
| Pages | Website Pages |
| Comments | Feedback / Reviews |
Hide from Editors:
Hide from Authors:
Admin Menu Editor allows adding links to:
This skill includes automation scripts that allow Claude to configure ALL white-label settings programmatically based on brand information you provide.
# Apply white-label config from JSON file
/root/.claude/skills/white-label/scripts/apply-white-label.sh config.json container-name
# Example for CSR Development:
/root/.claude/skills/white-label/scripts/apply-white-label.sh \
/root/csrdevelopment.com/white-label-config.json \
wordpress-local-wordpress-1
Create a JSON file with your brand settings:
{
"brand": {
"company_name": "Your Company",
"logo_url": "https://example.com/logo.png",
"website": "https://yourcompany.com",
"colors": {
"primary": "#2271b1",
"primary_dark": "#135e96",
"background": "#1a1a2e"
}
},
"login": {
"background_color": "#1a1a2e",
"form_background": "#ffffff",
"button_color": "#2271b1",
"logo_width": 300
},
"security": {
"login_url": "secure-login",
"disable_xmlrpc": true,
"obfuscate_authors": true
},
"dashboard": {
"hide_news": true,
"hide_quick_draft": true,
"welcome_title": "Welcome",
"welcome_message": "<p>Your custom dashboard message</p>"
},
"greeting": "Welcome,"
}
The automation script configures:
| Plugin | Settings Applied |
|---|---|
| White Label CMS | Admin bar logo, greeting, side menu, footer, dashboard widgets, welcome panel |
| ASE | Custom login URL, XML-RPC, author obfuscation, email obfuscation, heartbeat, revisions |
| Branda | Login page styling, admin bar, howdy message, footer |
Just say:
Claude will:
/root/.claude/skills/white-label/scripts/
βββ apply-white-label.sh # Main runner script
βββ configure-white-label.php # WP-CLI configuration script
βββ white-label-config.example.json # Example config file
All three plugins store settings in wp_options:
| Plugin | Option Name | Format |
|---|---|---|
| ASE | admin_site_enhancements |
Serialized array |
| Branda | ub_settings (and others) |
Serialized array |
| Admin Menu Editor | acp_custom_menu, acp_custom_menu_data |
Serialized array |
# ASE settings
docker exec wordpress wp option get admin_site_enhancements --format=json
# Branda settings
docker exec wordpress wp option get ub_settings --format=json
# Admin Menu Editor
docker exec wordpress wp option get acp_custom_menu --format=json
ASE Configuration:
docker exec wordpress wp option update admin_site_enhancements '{
"change_login_url": {"enabled": true, "slug": "secure-login"},
"hide_admin_notices": true,
"disable_xmlrpc": true,
"obfuscate_author_slugs": true,
"heartbeat_control": {
"dashboard": "disable",
"post_editor": 30,
"frontend": "disable"
},
"revisions_control": 5
}' --format=json
Branda Login Customization:
# Upload logo first
docker exec wordpress wp media import /path/to/logo.png --title="Client Logo"
# Get attachment ID
LOGO_ID=$(docker exec wordpress wp post list --post_type=attachment --name=logo --field=ID)
# Update Branda settings
docker exec wordpress wp option update ub_login_image "$LOGO_ID"
docker exec wordpress wp option update ub_login_background_color "#1a1a2e"
Complete white-label setup script:
#!/bin/bash
# white-label-setup.sh - Apply complete white-labeling
CLIENT_NAME="${1:-Client Name}"
LOGIN_URL="${2:-client-login}"
LOGO_PATH="${3:-}"
PRIMARY_COLOR="${4:-#2271b1}"
BACKGROUND_COLOR="${5:-#1a1a2e}"
# Configure ASE
docker-compose exec -T wpcli wp option update admin_site_enhancements "$(cat <<EOF
{
"change_login_url": {"enabled": true, "slug": "$LOGIN_URL"},
"hide_admin_notices": true,
"disable_xmlrpc": true,
"obfuscate_author_slugs": true,
"email_address_obfuscation": true,
"clean_up_admin_bar": {
"enabled": true,
"hide_wp_logo": true,
"hide_comments": true,
"hide_new_content": true
},
"disable_dashboard_widgets": {
"welcome": true,
"quick_draft": true,
"wordpress_news": true
},
"heartbeat_control": {
"dashboard": "disable",
"post_editor": 30,
"frontend": "disable"
},
"revisions_control": 5
}
EOF
)" --format=json
# Upload logo if provided
if [ -n "$LOGO_PATH" ] && [ -f "$LOGO_PATH" ]; then
docker cp "$LOGO_PATH" wordpress:/tmp/logo.png
docker-compose exec -T wpcli wp media import /tmp/logo.png --title="$CLIENT_NAME Logo"
fi
# Configure admin footer
docker-compose exec -T wpcli wp option update ub_admin_footer_text \
"© $(date +%Y) $CLIENT_NAME. All rights reserved."
echo "White-labeling complete for: $CLIENT_NAME"
echo "Login URL: /wp-login.php β /$LOGIN_URL"
Save this as your baseline white-label configuration:
{
"ase": {
"change_login_url": {
"enabled": true,
"slug": "secure-login"
},
"hide_admin_notices": true,
"disable_xmlrpc": true,
"obfuscate_author_slugs": true,
"email_address_obfuscation": true,
"clean_up_admin_bar": {
"enabled": true,
"hide_wp_logo": true,
"hide_comments": true,
"hide_new_content": true,
"hide_updates": true
},
"disable_dashboard_widgets": {
"welcome": true,
"quick_draft": true,
"wordpress_news": true,
"activity": false
},
"heartbeat_control": {
"dashboard": "disable",
"post_editor": 30,
"frontend": "disable"
},
"revisions_control": 5,
"image_upload_control": {
"max_width": 2560,
"max_height": 2560
}
},
"branda": {
"login_screen": {
"logo_enabled": true,
"background_color": "#1a1a2e",
"form_background": "#ffffff",
"button_color": "#e94560"
},
"admin_bar": {
"hide_wp_logo": true,
"custom_logo_enabled": true
},
"howdy_message": {
"enabled": true,
"text": "Welcome,"
},
"admin_footer": {
"enabled": true,
"text": "© {year} {client}. All rights reserved."
}
},
"admin_menu_editor": {
"hide_for_non_admins": [
"plugins.php",
"theme-editor.php",
"options-general.php",
"tools.php"
],
"rename": {
"Posts": "News",
"Media": "Files"
}
}
}
Before handing off to client: