white-label
Complete WordPress white-labeling using FREE plugins only - ASE, Branda, White Label CMS, Admin Menu Editor. Covers login page branding, admin cleanup, security hardening, and client handoff preparation.
What this skill does
# White-Label Skill (FREE Plugins Only)
Complete WordPress white-labeling system using free plugins to create a professional, branded admin experience without any paid elements.
## Plugin Stack
| 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 |
## Recommended Approach
1. **ASE** - Security first (login URL, XML-RPC, author slugs)
2. **White Label CMS** - Use setup wizard for quick branding + menu hiding
3. **Branda** - Fine-tune login page if White Label CMS isn't enough
---
## White Label CMS Quick Setup
**Access**: WordPress Admin → Settings → White Label CMS
### Setup Wizard
White Label CMS has a built-in wizard that walks you through:
1. Your company logo (admin bar, login page)
2. Client details
3. Dashboard welcome panel
4. Menu visibility
### Key Features
- **Custom Welcome Dashboard**: Add your own panel with Elementor/Beaver Builder support
- **Hide Menus by Role**: Built-in, no extra plugin needed
- **CMS Profiles**: Choose Website, Blog, or Custom preset
- **Import/Export**: Save and reuse settings across sites
- **Login Page**: Customize logo and use `/login` as URL alias
## What We Can Configure (100% FREE)
| 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 |
---
## Phase 1: Security First (ASE)
### 1.1 Change Login URL
- **Plugin**: ASE → Login/Logout → Change Login URL
- **Setting**: Custom URL like `/client-login` or `/secure-access`
- **Why**: Prevents automated attacks on `/wp-login.php`
**Recommended slugs:**
```
/client-login
/company-access
/portal
/secure-login
```
**Avoid:** `/login`, `/admin`, `/signin` (too common)
### 1.2 Login ID Type
- **Plugin**: ASE → Login/Logout → Login ID Type
- **Setting**: Restrict to "Username only" or "Email only"
- **Reduces attack surface**
### 1.3 Obfuscate Author Slugs
- **Plugin**: ASE → Security → Obfuscate Author Slugs
- **Hides usernames from author archive URLs**
### 1.4 Disable XML-RPC
- **Plugin**: ASE → Security → Disable XML-RPC
- **Prevents brute force and DDoS attacks**
### 1.5 Email Address Obfuscation
- **Plugin**: ASE → Security → Email Address Obfuscation
- **Protects displayed emails from scrapers**
---
## Phase 2: Branding (Branda)
### 2.1 Login Page Customization
**Access**: Branda → Login Screen
**Customize:**
- **Logo**: Upload client's logo (recommended: 200-400px wide, PNG or SVG)
- **Logo Link**: Change from wordpress.org to client's site
- **Background**: Solid color or image
- **Form Box**: Background color, border radius, shadow
- **Button**: Background color, text color, hover state
- **Links**: "Lost password" and "Back to site" colors
**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
```
### 2.2 Admin Bar Branding
**Access**: Branda → Admin Area → Admin Bar
**Options:**
- Replace WordPress logo with custom logo
- Hide WordPress logo entirely
- Custom admin bar background color
- Custom menu item colors
### 2.3 Replace "Howdy" Greeting
**Access**: Branda → Admin Area → Howdy Message
**Replace with:**
- "Welcome, {username}"
- "Hello, {display_name}"
- "{display_name}" (just the name)
### 2.4 Admin Footer
**Access**: Branda → Admin Area → Admin Footer
**Custom footer text (HTML supported):**
```html
© 2025 [Client Name]. Powered by <a href="https://youragency.com">Your Agency</a>.
```
### 2.5 Dashboard Widget Branding
**Access**: Branda → Dashboard → Welcome Widget
**Create custom welcome widget with:**
- Client logo
- Quick links to common tasks
- Support contact information
---
## Phase 3: Admin Cleanup (ASE)
### 3.1 Clean Up Admin Bar
- **Plugin**: ASE → Admin Interface → Clean Up Admin Bar
- **Hide**: WordPress logo, comments, new content, updates, help tab
- **Keep**: Site name, user menu, essentials only
### 3.2 Hide Admin Notices
- **Plugin**: ASE → Admin Interface → Hide Admin Notices
- **Moves notices to separate panel** (accessible via admin bar icon)
- Keeps interface clean for clients
### 3.3 Disable Dashboard Widgets
- **Plugin**: ASE → Admin Interface → Disable Dashboard Widgets
- **Disable**:
- WordPress News
- Quick Draft
- At a Glance (optional)
- Activity (optional)
- **Keep**: Custom widgets, Site Health (maybe)
### 3.4 Wider Admin Menu
- **Plugin**: ASE → Admin Interface → Wider Admin Menu
- **Better readability** for long menu items
---
## Phase 4: Menu Organization (Admin Menu Editor)
### 4.1 Reorder Menu Items
**Recommended Order for Clients:**
1. Dashboard
2. Pages
3. Posts (or custom CPT name)
4. Media
5. *(separator)*
6. Comments (if enabled)
7. *(separator)*
8. Appearance (hide for editors)
9. Plugins (hide for editors)
10. Users
11. Tools (hide for editors)
12. Settings (hide for editors)
### 4.2 Rename Confusing Items
| Original | Rename To |
|----------|-----------|
| Posts | News / Blog / Articles |
| Media | Files / Images |
| Pages | Website Pages |
| Comments | Feedback / Reviews |
### 4.3 Hide Advanced Items
**Hide from Editors:**
- Plugins
- Appearance → Editor
- Tools → all except Export
- Settings → all
**Hide from Authors:**
- Everything in Editor list
- Plus: Users, Comments settings
### 4.4 Add Custom Menu Items
Admin Menu Editor allows adding links to:
- External resources
- Custom admin pages
- Help documentation
---
## Phase 5: Performance & Cleanup (ASE)
### 5.1 Heartbeat Control
- **Dashboard**: Disable or reduce to 60s
- **Post Editor**: Reduce to 30s (for autosave)
- **Frontend**: Disable
### 5.2 Revisions Control
- **Limit to 5-10 revisions** per post
- Prevents database bloat
### 5.3 Image Upload Control
- **Max dimensions**: 2560x2560px
- **Convert BMP to JPG**: Enable
- **Convert PNG to JPG**: Enable (non-transparent only)
### 5.4 Disable Bloat
- **Embeds**: Disable if not using oEmbed
- **Emoji**: Disable (system emojis work fine)
- **Dashicons on frontend**: Disable
- **jQuery Migrate**: Disable if not needed
---
## Automated White-Labeling (Claude Can Do This!)
This skill includes automation scripts that allow Claude to configure ALL white-label settings programmatically based on brand information you provide.
### Quick Start
```bash
# 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
```
### Configuration File Format
Create a JSON file with your brand settings:
```json
{
"brand": {
"company_name": "Your Company",
"logo_url": "https://example.com/logo.png",
"website": "https://yourcompany.com",
"colors": {
"primary": "Related in Web Dev
generating-lwc-components
IncludedLightning Web Components with PICKLES methodology and 165-point scoring. Use this skill when the user creates or edits LWC components, builds wire service patterns, or writes Jest tests for LWC. TRIGGER when: user creates/edits LWC components, touches lwc/**/*.js, .html, .css, .js-meta.xml files, or asks about wire service, SLDS, or Jest LWC tests. DO NOT TRIGGER when: Apex classes (use generating-apex), Aura components, or Visualforce.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Set up queries with useQuery, mutations with useMutation, configure QueryClient caching strategies, implement optimistic updates, and handle infinite scroll with useInfiniteQuery. Use when: setting up data fetching in React projects, migrating from v4 to v5, or fixing object syntax required errors, query callbacks removed issues, cacheTime renamed to gcTime, isPending vs isLoading confusion, keepPreviousData removed problems.
document-processor-api
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
nutrient-document-processing
IncludedProcess documents with Nutrient DWS. Use when the user wants to generate PDFs from HTML or URLs, convert Office/images/PDFs, assemble or split packets, OCR scans, extract text/tables/key-value pairs, redact PII, watermark, sign, fill forms, optimize PDFs, or produce compliance outputs like PDF/A or PDF/UA. Triggers include convert to PDF, merge these PDFs, OCR this scan, extract tables, redact PII, sign this PDF, make this PDF/A, or linearize for web delivery.
tanstack-query
IncludedManage server state in React with TanStack Query v5. Covers useMutationState, simplified optimistic updates, throwOnError, network mode (offline/PWA), and infiniteQueryOptions. Use when setting up data fetching, fixing v4→v5 migration errors (object syntax, gcTime, isPending, keepPreviousData), or debugging SSR/hydration issues with streaming server components.
accelint-nextjs-best-practices
IncludedNext.js performance optimization and best practices. Use when writing Next.js code (App Router or Pages Router); implementing Server Components, Server Actions, or API routes; optimizing RSC serialization, data fetching, or server-side rendering; reviewing Next.js code for performance issues; fixing authentication in Server Actions; or implementing Suspense boundaries, parallel data fetching, or request deduplication.