The open-source, self-hosted alternative to ManageWP, MainWP, and InfiniteWP.
Bulk post management, credential validation, AI content generation -- all under your control.
If this project helps you, consider giving it a star -- it helps others discover it.
Features · Quick Start · How It Works · Security · Español
Managing WordPress sites at scale is painful. You either pay for SaaS tools that own your data, or you manually log into each site one by one. WP Manager gives you:
- Full control -- self-hosted, your server, your data, no third-party dependencies
- No WordPress plugins required -- connects via REST API, XML-RPC, or wp-login fallback
- Built for scale -- validated and tested with hundreds of sites simultaneously
- AI-powered content -- generate articles with OpenAI (50+ models) directly from the dashboard
- Security-first -- hardened against OWASP Top 10, encrypted credentials, per-user data isolation
|
|
|
|
Full module list (11 modules)
| Module | Description |
|---|---|
| Dashboard | Real-time stats: total, valid, failed, pending sites with quick access links |
| Site Checker | Import TXT, chunk-based validation with live progress, duplicate detection, search, export |
| Post Manager | Load posts from WordPress, save to local DB, bulk delete from WP |
| Post Editor | Edit posts inline with connection status indicator and permission badges |
| Post Creator | Create posts on multiple sites simultaneously with results panel |
| Mass Editor | Bulk operations on locally saved posts, export links |
| Content Uploader | Upload HTML/TXT files as posts to multiple sites |
| Page Editor | Load and edit WordPress pages with connection status |
| Article Generator | Generate articles with OpenAI (50+ models, template management) |
| Site Manager | View, import, and delete registered sites |
| Folder Manager | Hierarchical folder tree, move sites, refresh post counts |
| Layer | Technology |
|---|---|
| Backend | Laravel 13, PHP 8.3+, Eloquent ORM |
| Frontend | Vue 3, Inertia.js 2, TypeScript 5, Heroicons |
| Styling | Tailwind CSS 4 |
| Database | MySQL 8+ |
| AI | OpenAI API (GPT-4o, GPT-4, GPT-3.5, 50+ models) |
| Security | 8 layers (OWASP Top 10 hardened) |
- PHP 8.3+ with extensions:
pdo_mysql,curl,xml,mbstring,openssl - Composer 2
- Node.js 18+ and npm
- MySQL 8+
git clone https://github.com/KONDORDEVSECURITYCORP/wp-manager.git
cd wp-manager
composer install
npm install
cp .env.example .env
php artisan key:generateConfigure your database in .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=wp_manager
DB_USERNAME=your_user
DB_PASSWORD=your_passwordphp artisan migrate
npm run build
php artisan storage:link
# Create your admin account
php artisan tinker --execute="App\Models\User::create([
'name' => 'Admin',
'email' => 'admin@wpmanager.com',
'password' => bcrypt('YourPassword123!'),
'email_verified_at' => now()
]);"# Option 1: Single command (recommended)
composer dev
# Option 2: Two terminals
php artisan serve # Terminal 1
npm run dev # Terminal 2Open http://127.0.0.1:8000 and start managing your WordPress sites.
bash deploy.shProduction environment variables
APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com
SESSION_ENCRYPT=true
SESSION_SECURE_COOKIE=true
LOG_LEVEL=errorSee .env.production.example for the full list.
WP Manager validates credentials using a 3-tier fallback chain for maximum WordPress compatibility:
REST API (/users/me?context=edit)
|-- success --> roles + capabilities detected
|-- fail ----v
XML-RPC (wp.getUsersBlogs + wp.getProfile)
|-- success --> isAdmin + exact role detected
|-- fail ----v
wp-login.php (form-based login)
|-- success --> profile page scraping (best effort)
|-- fail ----> site marked as invalid
Validation runs inline via chunked HTTP requests -- no queue worker needed. For 100 sites: ~2-3 minutes with a real-time progress bar.
https://site.com/wp-login.php#username@password
https://site.com#username@password
https://site.com:username:password
Passwords with special characters (@, $, !, (, )) are fully supported.
| Method | What it detects |
|---|---|
| REST API | All roles + full capabilities map (edit_posts, publish_posts, etc.) |
| XML-RPC | isAdmin flag + exact role via wp.getProfile |
| Login | Role from profile page (best effort) |
Detected roles: administrator, editor, author, contributor, subscriber, and custom roles.
Hardened against the OWASP Top 10:
| # | Threat | Protection |
|---|---|---|
| A01 | Broken Access Control | User-scoped queries on all endpoints, ownership verification |
| A02 | Cryptographic Failures | WP passwords: AES-256-CBC, User passwords: bcrypt 12 rounds |
| A03 | Injection | Eloquent ORM parameterized queries, LIKE wildcard escaping |
| A04 | Insecure Design | Model hardening, password policy (min 8, mixed case, HaveIBeenPwned) |
| A05 | Security Misconfiguration | CSP, X-Frame-Options DENY, HSTS, COOP, CORP, Permissions-Policy |
| A06 | Vulnerable Components | npm audit clean (0 vulnerabilities) |
| A07 | Auth Failures | Per-user rate limiting (10-200 req/min), login throttling (5 attempts) |
| A08 | Software Integrity | MIME validation on uploads, DB::prohibitDestructiveCommands in production |
| A09 | Logging Failures | Audit trail on destructive operations with user_id, IP, timestamp |
| A10 | SSRF | Requests scoped to user-registered URLs only |
Additional security measures
- Input sanitization on all requests including JSON/AJAX (XSS protection)
- Session: httpOnly, sameSite=lax, encrypted in production
- CSRF on all POST/PUT/DELETE via Laravel middleware
$hidden = ['password']on WpSite model (never in API responses)
wp-manager/
├── app/
│ ├── Http/
│ │ ├── Controllers/ # 13 controllers (11 modules + auth + profile)
│ │ └── Middleware/ # SecurityHeaders, SanitizeInput, ThrottleByUser
│ ├── Models/ # User, WpSite, Folder, SavedPost
│ ├── Policies/ # WpSitePolicy (authorization)
│ ├── Services/ # WordPressService (REST/XML-RPC/Login)
│ └── Traits/ # LogsActivity (audit trail)
├── resources/js/
│ ├── Components/ # StatusBadge, SmartPagination, etc.
│ ├── Layouts/ # AuthenticatedLayout, GuestLayout
│ └── Pages/ # 11 module pages + Auth + Profile
├── database/migrations/ # Users, folders, wp_sites, saved_posts
├── deploy.sh # One-command production deploy
└── .env.production.example # Production environment template
Contributions are welcome. Please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Docker / Docker Compose support
- Plugin and theme management
- Scheduled post publishing
- Multi-language AI content generation
- Webhook notifications
- API for external integrations
- User management with team roles
Proprietary software by KONDORDEVSECURITYCORP. All rights reserved.
WP Manager es una aplicacion web auto-hospedada para gestionar multiples sitios WordPress a escala. La alternativa open-source y self-hosted a ManageWP, MainWP e InfiniteWP. Valida credenciales mediante una cadena de fallback REST API, XML-RPC y Login, detecta roles y permisos de usuario, y proporciona herramientas para gestion masiva de posts, generacion de contenido con IA y organizacion de sitios.
Todos los datos estan aislados por usuario -- cada usuario solo ve sus propios sitios, carpetas y posts.
- Control total -- self-hosted, tu servidor, tus datos, sin dependencias de terceros
- Sin plugins de WordPress -- conecta via REST API, XML-RPC o wp-login
- Hecho para escala -- validado y probado con cientos de sitios simultaneamente
- Contenido con IA -- genera articulos con OpenAI (50+ modelos) desde el dashboard
- Seguridad primero -- OWASP Top 10, credenciales encriptadas, aislamiento por usuario
|
Gestion de Sitios
|
Operaciones de Contenido
|
|
Generacion de Contenido con IA
|
Seguridad y Privacidad
|
git clone https://github.com/KONDORDEVSECURITYCORP/wp-manager.git
cd wp-manager
composer install && npm install
cp .env.example .env
php artisan key:generateConfigurar .env con credenciales MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=wp_manager
DB_USERNAME=tu_usuario
DB_PASSWORD=tu_contraseñaphp artisan migrate
npm run build
php artisan storage:link
# Crear usuario administrador
php artisan tinker --execute="App\Models\User::create([
'name' => 'Admin',
'email' => 'admin@wpmanager.com',
'password' => bcrypt('TuPassword123!'),
'email_verified_at' => now()
]);"# Opcion 1: Un solo comando (recomendado)
composer dev
# Opcion 2: Dos terminales
php artisan serve # Terminal 1
npm run dev # Terminal 2Abrir http://127.0.0.1:8000
bash deploy.shVariables de entorno para produccion
APP_ENV=production
APP_DEBUG=false
APP_URL=https://tu-dominio.com
SESSION_ENCRYPT=true
SESSION_SECURE_COOKIE=true
LOG_LEVEL=errorVer .env.production.example para la lista completa.
REST API (/users/me?context=edit)
|-- exito ---> roles + capabilities detectados
|-- falla ---v
XML-RPC (wp.getUsersBlogs + wp.getProfile)
|-- exito ---> isAdmin + rol exacto detectado
|-- falla ---v
wp-login.php (login por formulario)
|-- exito ---> scraping de pagina de perfil
|-- falla ---> sitio marcado como invalido
Para 100 sitios: ~2-3 minutos con barra de progreso en tiempo real. Sin queue worker necesario.
https://sitio.com/wp-login.php#usuario@contraseña
https://sitio.com#usuario@contraseña
https://sitio.com:usuario:contraseña
| # | Amenaza | Proteccion |
|---|---|---|
| A01 | Control de Acceso Roto | Queries scoped por usuario, verificacion de ownership |
| A02 | Fallos Criptograficos | WP: AES-256-CBC, Usuarios: bcrypt 12 rounds |
| A03 | Inyeccion | Queries parametrizadas con Eloquent |
| A04 | Diseño Inseguro | Model hardening, politica de contraseñas robusta |
| A05 | Mala Configuracion | CSP, HSTS, X-Frame DENY, COOP, CORP |
| A06 | Componentes Vulnerables | npm audit limpio |
| A07 | Fallos de Autenticacion | Rate limiting por usuario, throttling de login |
| A08 | Integridad de Software | Validacion MIME, comandos destructivos prohibidos en prod |
| A09 | Fallos de Logging | Auditoria completa con user_id, IP, timestamp |
| A10 | SSRF | Requests limitados a URLs registradas |
Software propietario de KONDORDEVSECURITYCORP. Todos los derechos reservados.
If you find this useful, please give it a star. It helps more than you think.