A comprehensive, agency-ready WordPress management suite — built with React 19, TypeScript, and the WordPress REST API.
| Dashboard | Plugin Manager |
|---|---|
![]() |
![]() |
| Theme Manager | File Manager |
|---|---|
![]() |
![]() |
| Database Manager | User Manager |
|---|---|
![]() |
![]() |
| Maintenance Mode | Debug Tools |
|---|---|
![]() |
![]() |
| Image Tools | Performance |
|---|---|
![]() |
![]() |
| System Info | Reset Tools |
|---|---|
![]() |
![]() |
| Security | Settings |
|---|---|
![]() |
![]() |
| Cron Manager | Media Manager |
|---|---|
![]() |
![]() |
| Content Tools | Notes |
|---|---|
![]() |
![]() |
WP Manager Pro replaces the need for multiple separate admin plugins by providing a single, fast, modern interface for managing every critical aspect of a WordPress site. It ships as a standard WordPress plugin — install it, activate it, and a full React-powered control panel appears under your WP Admin menu.
All operations happen through a secured REST API (wp-manager-pro/v1) that requires the manage_options capability on every route.
| Feature | Description |
|---|---|
| 🩺 Plugin Health Check | New "Health" tab on the Plugins page — audits every plugin for abandonment, WP compatibility, low ratings, and known CVEs |
| 🕰️ Abandoned Detection | Flags plugins not updated in 2+ years using WordPress.org API |
| 🔒 CVE Overlay | Merges WPScan vulnerability data into each plugin row (reuses your existing API key) |
| ♻️ Smart Caching | Results cached 24 h server-side; one-click Re-scan to force a fresh check |
| ⌨️ WPMGR Admin Bar | Icon aligned, label shortened — one click opens the global Command Palette overlay without navigating to the plugin |
| Feature | Description |
|---|---|
| 🌙 Dark Mode Auto-Sync | Three-state Light / Dark / Auto toggle — Auto follows OS prefers-color-scheme with no flash on load |
| 📊 Dashboard Widgets | Configurable widget grid (8 widgets): Quick Stats, Site Status, System Resources, Recent Posts, Quick Actions, Audit Events, Cache Status, Uptime Ping — show/hide via Customize panel |
| 🔔 Notification Centre | Persistent bell icon with unread count; slide-out panel for alerts with mark-read and dismiss |
| 📱 Mobile / Tablet Layout | Bottom nav bar on mobile with full-page "More" drawer; sidebar auto-collapses to icon-rail on tablet |
| 🔍 Global Search | Live search in Command Palette across plugins, users, notes, audit log, and wp_options as you type |
| ⌨️ System-wide Command Palette | Standalone overlay injected into all WP admin pages — open from the WPMGR admin bar button or keyboard shortcut from anywhere in wp-admin |
| 📦 Custom Post Type Manager | Register, edit, and delete CPTs and taxonomies from the UI — dashicons picker, supports selector, Public / REST / Archive toggles |
- Real-time site health at a glance
- Active plugin/theme/user counts
- Available update alerts (core, plugins, themes)
- PHP memory limit, max execution time, upload limit
- Database size, uploads folder size, disk usage
- Recent posts summary
- List all installed plugins with activation status and pending updates
- Activate / deactivate with instant feedback
- Delete plugins (with auto-deactivation guard)
- Upload a
.zipto install or overwrite an existing plugin - Export any installed plugin as a
.zipdownload - Search and install directly from the WordPress.org repository
- v1.2.0 One-click update button on plugins with available updates
- v1.2.0 Version History dialog — browse and install any version from WordPress.org
- v1.2.0 Smart WP.org search buttons: Install / Update / Installed ✓
- Browse all installed themes with screenshots, parent/child relationships
- Activate themes with one click
- Delete inactive themes
- Upload a
.zipto install or overwrite an existing theme - Export any installed theme as a
.zipdownload - Search and install from WordPress.org
- v1.2.0 One-click update button on outdated themes
- v1.2.0 Version History dialog — install any version
- v1.2.0 Smart WP.org search buttons
- Full filesystem browser starting from
ABSPATH - Breadcrumb navigation with file metadata (size, modified date, writable status)
- Monaco Editor (VS Code engine) with full syntax highlighting for PHP, JS, TS, CSS, JSON, SQL, YAML, HTML, SVG, Markdown, and more
- Upload files directly to any directory
- Rename files and folders in-place
- Create directories, delete files and folders
- Security: path traversal protection via
realpath(), critical file guard, 2 MB read limit
- Table browser: engine, collation, row count, size
- Paginated table data viewer
- Insert, edit, and delete individual table rows
- Export any table as a
.sqldump download - Search & Replace across all tables with correct serialized-data handling
- Single-table or bulk
OPTIMIZE TABLE - SQL query runner —
SELECT,SHOW,DESCRIBE,EXPLAINonly
- Paginated user list with avatars, roles, registration date, post count
- Change any user's role (prevents modifying your own role)
- Rename any user's login username
- Login As — admin impersonation via secure one-time token (5-minute expiry)
- Delete users with post reassignment to admin
- Search and filter by role
- WordPress: version, site/home URL, locale, charset, multisite, debug flags, memory limits
- PHP: version, OS, memory, loaded extensions
- Database: host, version, size, charset, collation
- Server: software, IP, port, protocol, HTTPS status, disk space
- Active plugins with versions, defined constants, next 20 cron jobs
- Toggle maintenance mode on/off instantly
- Custom title and message
- v1.3.0 Tabbed appearance editor (Content, Appearance, Extras)
- v1.3.0 6 gradient presets (Midnight, Sunset, Forest, Royal, Slate, Candy)
- v1.3.0 Custom color pickers for background gradient, accent divider, and text
- v1.3.0 Emoji icon picker (8 presets + custom input) with floating animation
- v1.3.0 Status badge toggle with custom text
- v1.3.0 Countdown timer to a specified date/time
- v1.3.0 Live preview pane — updates in real-time as you adjust settings
- v1.3.0 Save settings independently of toggling maintenance state
- Generates a styled standalone HTML maintenance page (fully inline CSS)
- Automatically removed on plugin deactivation
- Toggle
WP_DEBUG,WP_DEBUG_LOG,WP_DEBUG_DISPLAY,SAVEQUERIES,SCRIPT_DEBUGdirectly inwp-config.php - Error log viewer (last N lines)
- Filter error log by level: Error, Warning, Notice, Deprecated
- Copy entire log to clipboard with one click
- Clear error log with one click
- Auto-detects
wp-content/debug.logor PHPerror_logpath
- Enable/disable WebP conversion on upload (requires GD or ImageMagick)
- v1.3.0 Enable AVIF uploads (requires PHP 8.1+ GD
imageavifor ImageMagick with AVIF codec) - Set maximum image dimensions (width × height)
- Configure JPEG quality
- Regenerate all registered thumbnail sizes in bulk
- Enable SVG uploads with per-role permission control (administrator, editor, author)
- Server-side SVG sanitization (strips
<script>,on*events,javascript:hrefs,<foreignObject>,<base>) - Support status cards: GD, ImageMagick, WebP, AVIF
- v1.5.0 Batch convert existing media library images to WebP or AVIF with live progress bar
- v1.6.0 Serve WebP automatically via
wp_get_attachment_urlfilter + Apache.htaccessrewrite rules - v1.6.0 Replace Original with WebP — delete original after conversion and update attachment metadata
- v1.6.0 Auto-delete
.webp/.avifsidecar files when the original attachment is deleted - v1.6.0 Delete all converted sidecars per format with a single button
- v1.8.0 Server Config Generator — copy-ready Nginx & Apache snippets for WebP serving, security headers, and browser cache rules
- Mail Interceptor — log every outgoing
wp_mail()call (to, subject, body, date); Dev Mode prevents real delivery; preview HTML/plain emails in-plugin; one-click Resend - White-label Login Page — custom logo (Media Library picker), background colour/image, button colour, heading text, and footer text injected into
wp-login.php; side-by-side live preview pane; Privacy & Terms links - Admin UI Customiser — hide any WP admin menu item or dashboard widget for non-admin roles; clients only see what they need
- Client Report Generator — one-click standalone HTML report: health score, WP/PHP/DB versions, SSL, WP_DEBUG, pending updates, last backup, active plugins — download or copy to clipboard
- Coming Soon Mode — pre-launch page (200 OK) with custom logo/background (Media Library pickers), heading, message, countdown timer with glass-card tiles, accent colour; optional email-capture form with exportable list
Six-tab page for advanced WordPress introspection and testing:
- Hook Explorer — browse all registered
add_action/add_filterhooks from$wp_filter; shows hook name, priority, callback with source file + line (Reflection); full-text search - REST API Tester — built-in Postman-style client pre-authenticated with WP nonce; browse routes by namespace; set method, path, JSON body, headers; response panel with status, duration, headers, and formatted body
- Dummy Data Generator — create up to 50 test posts, pages, users, or WooCommerce products (when active); items tagged with
_wmp_dummy_datameta for safe bulk one-click cleanup - Rewrite Rules Tester — input any URL path; shows the matched rule, redirect query string, resolved
$query_vars; expandable full rules table - Object Cache Browser — list Redis keys via SCAN (or WP internal cache groups); inspect value per key (string/list/set/hash/zset); delete individual keys
- Database Prefix Changer — dry-run preview of all affected tables;
RENAME TABLEfor every table; updatesoption_nameandmeta_keyrows; rewrites$table_prefixinwp-config.php; confirmation dialog requires checkbox + typed new prefix
- White-label the plugin: set a custom Plugin Name, Admin Menu Label, and Sidebar Logo URL
- v2.9.3 Logo URL field has a dedicated "Select" button that opens the WordPress Media Library picker
- Changes take effect immediately after saving and reloading the page
- Inline Changelog tab — collapsible version history accordion with the current version highlighted
- FAQ tab with 9 common questions and a direct link to open a GitHub issue
- Run custom PHP, CSS, and JavaScript directly from the dashboard without editing files
- PHP snippets execute on
init; CSS outputs towp_head; JS outputs towp_footer - Per-snippet enable/disable toggle — no deletion required to disable
- Stored in the custom
wp_wmp_snippetsdatabase table - v1.8.0 Monaco Editor (VS Code engine) in the create/edit dialog with syntax highlighting per snippet type
- Full 301/302/307/308 redirect CRUD with source → destination mapping
- Wildcard
*support in source paths - Hit counter, active/inactive toggle per rule
- CSV import/export for migrating from other redirect plugins
- Configure SMTP host, port, authentication, and encryption from the dashboard
- Send a test email to verify your configuration
- Email log: recipient, subject, status (Sent / Failed), timestamp, error message
- Full or table-specific SQL dump via the browser
- Backup list with filename, size, and creation date
- One-click download and delete
- Stored in a protected
wp-content/wmp-backups/directory - v1.8.0 Scheduled Backups — daily / weekly / monthly auto-backup via WP Cron; configurable retain-last-N limit; oldest files pruned automatically after each run
- Tracks plugin, theme, user, and post events automatically
- Filter by action type; export to CSV; clear log
Five-tab Security Suite covering every major attack surface:
Overview Tab
- At-a-glance status cards for all six security features with on/off indicators
- Shows WordPress version and locale with a quick link to the Integrity tab
Login Tab (v1.3.0 + v2.0.0)
- Admin URL Protection: Move
wp-login.phpto a secret slug; direct GET requests blocked - Login Attempt Limiter: Configurable max attempts, counting window (seconds), and lockout duration; stored via WordPress transients
- Lockout Log: Paginated history of IP lockouts with username, timestamp, attempt count; per-IP unlock and bulk clear
Hardening Tab (New in v2.0.0)
- Disable XML-RPC: One toggle to apply
xmlrpc_enabledfilter — prevents brute-force and DDoS viaxmlrpc.php - Hide WordPress Version: Removes WP version from
<meta name="generator">and strips?ver=X.Y.Zfrom all script/style URLs - IP Blocklist: Add individual IPs or CIDR ranges (e.g.
10.0.0.0/24) with optional notes; enforced oninitbefore any output; supports remove
Integrity Tab (New in v2.0.0)
- Fetches official MD5 checksums from
api.wordpress.org/core/checksums - Compares every file in
wp-admin/andwp-includes/against expected hashes - Reports modified files (path + actual vs. expected hash + last modified date) and missing files
wp-content/excluded (user content)
Two-Factor Auth Tab (New in v2.0.0)
- TOTP-based 2FA per admin account (RFC 6238 — SHA1, 6 digits, 30-second window)
- QR code for easy scanning with Google Authenticator, Authy, or any TOTP app
- Fallback manual secret entry (base32-encoded)
- 8 one-time backup codes generated on first verification (shown once, stored as MD5 hashes)
- Per-user enable/disable; 100% native PHP — no Composer dependencies
Dedicated threat-detection page (ScanLine icon in System group) with four tabs and a unified security score:
Overview Tab
- Animated security score ring (0–100, letter grade A+→F) computed from all scan results
- Four summary cards for Malware, Vulnerabilities, SSL, and Core — each clickable to run that individual check
- "Run All Scans" button triggers every check simultaneously
Malware Scanner Tab
- Scans up to 8,000 PHP/JS/HTML files in plugins and themes directories
- 13 detection patterns:
eval(base64_decode(…)),eval(gzinflate/gzuncompress/gzdecode(…)),eval(str_rot13(…)),preg_replacewith/emodifier,assert()/system()/exec()/passthru()/shell_exec()with$_POST/$_GETinput, long base64-encoded strings, dynamic variable function calls, known webshell markers (FilesMan, r57, c99),document.write(unescape(…))JS injection - Files > 512 KB skipped automatically; scope selector: all / plugins / themes
- Each finding shows file path, severity badge (critical / warning), line number, and code snippet
Vulnerabilities Tab
- Checks installed plugins and themes against the WPScan CVE API (free tier: 25 requests/day)
- Configurable API key — stored securely, only last 4 characters displayed in UI
- Expandable rows per item: CVE title, CVSS severity + score, fix version, CVE/URL reference links
SSL & Core Tab
- SSL Monitor: PHP
stream_socket_client+openssl_x509_parseto read certificate; shows subject, issuer, SAN entries, valid-from/to, days remaining with green/amber/red alerts - Core check: fetches latest WordPress version from
api.wordpress.org/core/version-check/1.7/; flags outdated installs - PHP EOL check: built-in end-of-life date table for PHP 5.6 through 8.4; highlights EOL and near-EOL (< 90 days) versions
Three-tab page for full WP-Cron control:
Events Tab
- Complete list of all scheduled cron events sorted by next-run timestamp
- Colour-coded next-run times: green (future), amber (< 5 min), red (overdue)
corebadge on WordPress core events; argument count badge on events with args- Manual Trigger — run any event on demand; captures output and execution time in an inline result banner
- Delete custom (non-core) events with one click
Schedules Tab
- Lists all registered schedules (built-in + custom) with key, display name, and interval (human + raw seconds)
- Add Custom Schedule form: key (snake_case), display name, interval in seconds (minimum 60)
- Delete custom schedules; built-in WordPress schedules are protected
Health Tab
- Status cards: WP-Cron enabled/disabled (
DISABLE_WP_CRON), overdue event count (with detail list), lock timeout (WP_CRON_LOCK_TIMEOUT), alternate cron (ALTERNATE_WP_CRON) - Real Cron Setup guide:
wp-config.phpsnippet, server crontab command (site URL pre-filled), WP-CLI command
Five-tab page for media library cleanup and maintenance:
Overview Tab — stats cards: total attachments, uploads folder size, orphaned/unused/duplicate counts; "What Each Section Does" guide
Orphaned Tab — lists attachments whose physical file is missing from disk; bulk-select checkboxes; delete via wp_delete_attachment
Unused Tab — lists unattached attachments not used as featured images and not referenced in any published post content; thumbnail previews, file sizes, total MB indicator, bulk delete
Duplicates Tab — groups files by MD5 hash; shows wasted space per group and total wasted; one-click delete of duplicate copies (oldest kept as original)
Compress Tab — re-compresses JPEG and PNG files in-place via wp_get_image_editor; adjustable quality slider (40–100, default 82); displays before size, after size, bytes saved, and percentage saved
- Color-coded, persistent note-taking (stored in a custom
wp_wmp_notestable) - Create, edit, delete notes with 6 color options
- Ordered by last updated
- Live count preview before any action (posts, pages, comments, media, non-admin users)
- Checkbox selection of which content types to reset
- Double confirmation dialog to prevent accidental data loss
- Safe deletion using WordPress core functions only
- Non-destructive to plugin settings, admin accounts, or site configuration
| Requirement | Minimum |
|---|---|
| WordPress | 5.9 |
| PHP | 7.4 |
| MySQL/MariaDB | 5.6+ |
| Browser | Modern (ES2020+) |
- Download
wp-manager-pro-v2.9.3.zipfrom the Releases page. - In WP Admin → Plugins → Add New → Upload Plugin.
- Upload the ZIP and click Install Now, then Activate.
- Navigate to WP Manager in the admin sidebar (or click Open in the Plugins list).
unzip wp-manager-pro-v2.9.3.zip -d /path/to/wp-content/plugins/Then activate via WP Admin → Plugins.
node >= 18
npm >= 9git clone https://github.com/nurkamol/wp-manager-pro.git
cd wp-manager-pro
npm installnpm run devnpm run build
# Outputs:
# assets/build/index.js (~773 kB, ~216 kB gzipped)
# assets/build/style.css (~51 kB, ~9 kB gzipped)cd ..
zip -r wp-manager-pro-v2.9.3.zip \
wp-manager-pro/wp-manager-pro.php \
wp-manager-pro/includes/ \
wp-manager-pro/assets/build/| Package | Version | Purpose |
|---|---|---|
| React | 19 | UI framework |
| TypeScript | 5.7 | Type safety |
| Vite | 6 | Build tool |
| Tailwind CSS | 3.4 | Utility-first styling |
| shadcn/ui | manual | Component library (Radix UI) |
| TanStack Query | v5 | Server state & caching |
| React Router | v7 | Client-side routing (HashRouter) |
| Monaco Editor | latest | VS Code editor engine (File Manager) |
| Lucide React | 0.469 | Icon set |
| Sonner | 1.7 | Toast notifications |
| Technology | Details |
|---|---|
| PHP | 7.4+ |
| WordPress REST API | Namespace: wp-manager-pro/v1 |
| Authentication | WordPress nonce (wp_rest) |
| Authorization | manage_options capability on all routes |
Base URL: {site_url}/wp-json/wp-manager-pro/v1
All endpoints require a valid WordPress nonce in the X-WP-Nonce header.
| Method | Endpoint | Description |
|---|---|---|
| GET | /dashboard |
Site stats & health |
| GET | /plugins |
List all plugins |
| POST | /plugins/activate |
Activate plugin |
| POST | /plugins/deactivate |
Deactivate plugin |
| DELETE | /plugins/delete |
Delete plugin |
| POST | /plugins/install |
Install from WP.org |
| GET | /plugins/search |
Search WP.org |
| POST | /plugins/upload |
Upload plugin ZIP |
| GET | /plugins/export |
Create plugin ZIP export |
| GET | /plugins/download |
Stream plugin ZIP download |
| POST | /plugins/update |
v1.2.0 Update plugin to latest version |
| POST | /plugins/install-version |
v1.2.0 Install specific plugin version |
| GET | /themes |
List all themes |
| POST | /themes/activate |
Activate theme |
| DELETE | /themes/delete |
Delete theme |
| POST | /themes/install |
Install from WP.org |
| GET | /themes/search |
Search WP.org |
| POST | /themes/upload |
Upload theme ZIP |
| GET | /themes/export |
Create theme ZIP export |
| GET | /themes/download |
Stream theme ZIP download |
| POST | /themes/update |
v1.2.0 Update theme to latest version |
| POST | /themes/install-version |
v1.2.0 Install specific theme version |
| GET | /files |
List directory contents |
| GET | /files/read |
Read file content |
| POST | /files/write |
Write file content |
| DELETE | /files/delete |
Delete file or directory |
| POST | /files/mkdir |
Create directory |
| POST | /files/upload |
Upload file to directory |
| POST | /files/rename |
Rename file or folder |
| GET | /database/tables |
List database tables |
| GET | /database/table-data |
Browse table rows |
| POST | /database/search-replace |
Search & replace |
| POST | /database/optimize |
Optimize tables |
| POST | /database/query |
Run SQL query |
| POST | /database/row |
Insert table row |
| PUT | /database/row |
Update table row |
| DELETE | /database/row |
Delete table row |
| GET | /database/export |
Export table as SQL dump |
| GET | /system |
System information |
| GET | /maintenance |
Maintenance status & appearance settings |
| POST | /maintenance/toggle |
Toggle maintenance + save settings |
| POST | /maintenance/settings |
v1.3.0 Save appearance settings without toggling |
| GET | /users |
List users |
| POST | /users/change-role |
Change user role |
| POST | /users/login-as |
Generate login-as token |
| DELETE | /users/delete |
Delete user |
| POST | /users/rename |
Rename user login |
| GET | /notes |
List notes |
| POST | /notes |
Create note |
| PUT | /notes/{id} |
Update note |
| DELETE | /notes/{id} |
Delete note |
| GET | /debug |
Debug status |
| POST | /debug/toggle |
Toggle debug constants |
| GET | /debug/log |
Read error log |
| DELETE | /debug/log/clear |
Clear error log |
| GET | /images/settings |
Image settings |
| POST | /images/settings |
Save image settings |
| POST | /images/regenerate |
Regenerate thumbnails |
| POST | /images/convert |
v1.5.0 Batch convert images to WebP/AVIF |
| GET | /images/convert-stats |
v1.5.0 Conversion stats (total/converted/remaining) |
| DELETE | /images/convert |
v1.6.0 Delete all sidecar files for a format |
| GET | /reset/status |
Get content counts |
| POST | /reset/execute |
Execute site reset |
| GET | /security |
v1.3.0 Admin URL protection status |
| POST | /security/admin-url |
v1.3.0 Enable/update custom login slug |
| DELETE | /security/admin-url |
v1.3.0 Disable admin URL protection |
| GET | /cron/events |
v2.1.0 List all scheduled cron events |
| POST | /cron/run |
v2.1.0 Trigger a cron event immediately |
| DELETE | /cron/event |
v2.1.0 Delete / unschedule a cron event |
| GET | /cron/schedules |
v2.1.0 List all registered schedules |
| POST | /cron/schedules |
v2.1.0 Create a custom schedule |
| DELETE | /cron/schedules |
v2.1.0 Delete a custom schedule |
| GET | /cron/health |
v2.1.0 Cron health status and real-cron hints |
| GET | /media/overview |
v2.2.0 Stats: total attachments, uploads size, orphaned/unused/duplicate counts |
| GET | /media/orphaned |
v2.2.0 List attachments with missing physical files |
| DELETE | /media/orphaned |
v2.2.0 Bulk delete orphaned attachments by ID array |
| GET | /media/unused |
v2.2.0 List unattached, unreferenced attachments with thumbnails |
| DELETE | /media/unused |
v2.2.0 Bulk delete unused attachments by ID array |
| GET | /media/duplicates |
v2.2.0 Group attachments by MD5 hash; returns wasted-space totals |
| DELETE | /media/duplicate |
v2.2.0 Delete a single duplicate attachment |
| GET | /media/compress-candidates |
v2.2.0 List JPEG/PNG attachments with file sizes |
| POST | /media/compress |
v2.2.0 Re-compress one attachment; returns before/after sizes |
| GET | /security/overview |
v2.0.0 All security feature states in one call |
| POST | /security/limiter |
v2.0.0 Save login limiter settings |
| GET | /security/lockouts |
v2.0.0 List lockout log entries |
| DELETE | /security/lockouts |
v2.0.0 Clear all lockout log entries |
| POST | /security/lockouts/unlock |
v2.0.0 Unlock a specific IP |
| GET | /security/ip-blocklist |
v2.0.0 List blocked IPs |
| POST | /security/ip-blocklist |
v2.0.0 Add IP or CIDR to blocklist |
| DELETE | /security/ip-blocklist |
v2.0.0 Remove IP from blocklist |
| POST | /security/hardening |
v2.0.0 Save XML-RPC / hide-version settings |
| POST | /security/integrity |
v2.0.0 Run core file integrity check |
| GET | /security/2fa |
v2.0.0 Get 2FA status for current user |
| POST | /security/2fa/setup |
v2.0.0 Generate TOTP secret + QR URL |
| POST | /security/2fa/verify |
v2.0.0 Verify code and activate 2FA |
| DELETE | /security/2fa |
v2.0.0 Disable 2FA for current user |
| GET | /snippets |
v1.4.0 List snippets |
| POST | /snippets |
v1.4.0 Create snippet |
| PUT | /snippets/{id} |
v1.4.0 Update snippet |
| POST | /snippets/{id}/toggle |
v1.4.0 Toggle snippet enabled state |
| DELETE | /snippets/{id} |
v1.4.0 Delete snippet |
| GET | /redirects |
v1.4.0 List redirects |
| POST | /redirects |
v1.4.0 Create redirect |
| PUT | /redirects/{id} |
v1.4.0 Update redirect |
| DELETE | /redirects/{id} |
v1.4.0 Delete redirect |
| POST | /redirects/export |
v1.4.0 Export redirects as CSV |
| GET | /redirects/download |
v1.4.0 Download CSV export |
| POST | /redirects/import |
v1.4.0 Import redirects from CSV |
| GET | /email/settings |
v1.4.0 SMTP settings |
| POST | /email/settings |
v1.4.0 Save SMTP settings |
| POST | /email/test |
v1.4.0 Send test email |
| GET | /email/log |
v1.4.0 Email log |
| DELETE | /email/log/clear |
v1.4.0 Clear email log |
| GET | /backup |
v1.4.0 List backups |
| POST | /backup/create |
v1.4.0 Create backup |
| POST | /backup/download |
v1.4.0 Prepare backup for download |
| GET | /backup/serve |
v1.4.0 Stream backup file |
| DELETE | /backup/delete |
v1.4.0 Delete backup |
| GET | /backup/schedule |
v1.8.0 Get scheduled backup config |
| POST | /backup/schedule |
v1.8.0 Save scheduled backup config |
| GET | /settings |
v1.8.0 Get branding settings |
| POST | /settings |
v1.8.0 Save branding settings |
| GET | /audit |
v1.4.0 Audit log entries |
| DELETE | /audit/clear |
v1.4.0 Clear audit log |
| POST | /audit/export |
v1.4.0 Export audit log as CSV |
| GET | /audit/download |
v1.4.0 Download CSV export |
| GET | /audit/action-types |
v1.4.0 Available action type filters |
| GET | /developer/hooks |
v2.9.0 Browse all WordPress hooks |
| GET | /developer/rest-routes |
v2.9.0 List all registered REST routes |
| POST | /developer/rest-request |
v2.9.0 Proxy an authenticated REST request |
| POST | /developer/generate |
v2.9.0 Generate dummy posts/pages/users/products |
| GET | /developer/dummy-stats |
v2.9.0 Count dummy-tagged items |
| DELETE | /developer/dummy |
v2.9.0 Delete all dummy-tagged items |
| GET | /developer/rewrite-test |
v2.9.0 Test URL against rewrite rules |
| GET | /developer/cache-keys |
v2.9.0 Browse object cache keys by prefix |
| GET | /developer/cache-value |
v2.9.0 Get a specific cache key value |
| DELETE | /developer/cache-key |
v2.9.0 Delete a specific cache key |
| GET | /developer/prefix-info |
v2.9.0 Get current DB prefix + table list |
| POST | /developer/change-prefix |
v2.9.0 Rename database table prefix |
| GET | /scanner/file |
v2.9.3 Read file content around a flagged line |
| DELETE | /scanner/file |
v2.9.3 Delete a flagged file |
| POST | /scanner/quarantine |
v2.9.3 Move file to wmp-quarantine/ directory |
| POST | /scanner/ignore |
v2.9.3 Add file to scanner ignore list |
| GET | /scanner/ignored |
v2.9.3 List ignored files |
| DELETE | /scanner/ignored |
v2.9.3 Remove file from ignore list |
wp-manager-pro/
├── wp-manager-pro.php # Plugin entry point, constants, activation hooks
├── includes/
│ ├── class-plugin.php # Singleton bootstrap, hook registration
│ ├── class-admin.php # Admin menu, asset enqueuing, plugin links
│ └── api/
│ ├── class-routes.php # REST route registration (96 endpoints)
│ └── controllers/
│ ├── class-dashboard-controller.php
│ ├── class-plugins-controller.php
│ ├── class-themes-controller.php
│ ├── class-files-controller.php
│ ├── class-database-controller.php
│ ├── class-users-controller.php
│ ├── class-system-controller.php
│ ├── class-maintenance-controller.php
│ ├── class-debug-controller.php
│ ├── class-images-controller.php
│ ├── class-notes-controller.php
│ ├── class-reset-controller.php
│ ├── class-security-controller.php # v1.3.0 → v2.0.0
│ ├── class-snippets-controller.php # v1.4.0
│ ├── class-redirects-controller.php # v1.4.0
│ ├── class-email-controller.php # v1.4.0
│ ├── class-backup-controller.php # v1.4.0
│ ├── class-audit-controller.php # v1.4.0
│ ├── class-settings-controller.php # v1.8.0
│ ├── class-performance-controller.php # v1.9.0
│ ├── class-cron-controller.php # v2.1.0
│ ├── class-media-controller.php # v2.2.0
│ ├── class-content-controller.php # v2.3.0
│ ├── class-dev-tools-controller.php # v2.4.0
│ ├── class-update-manager-controller.php # v2.6.0
│ ├── class-security-scanner-controller.php # v2.7.0
│ ├── class-agency-controller.php # v2.8.0
│ └── class-developer-controller.php # v2.9.0
├── assets/
│ └── build/
│ ├── index.js # Compiled React app (~793 kB, ~220 kB gzip)
│ └── style.css # Compiled styles (~52 kB, ~9 kB gzip)
├── src/ # React source (TypeScript)
│ ├── main.tsx
│ ├── index.css
│ ├── App.tsx
│ ├── lib/
│ │ ├── api.ts
│ │ └── utils.ts
│ ├── hooks/
│ │ └── useTheme.ts # v1.2.0 Dark mode hook
│ ├── components/
│ │ ├── Sidebar.tsx # Nav + dark mode toggle
│ │ ├── Layout.tsx
│ │ ├── PageHeader.tsx
│ │ ├── LoadingSpinner.tsx
│ │ └── ui/ # shadcn components
│ └── pages/
│ ├── Dashboard.tsx
│ ├── Plugins.tsx
│ ├── Themes.tsx
│ ├── FileManager.tsx
│ ├── Database.tsx
│ ├── Users.tsx
│ ├── SystemInfo.tsx
│ ├── Maintenance.tsx # v1.3.0 appearance + v1.5.0 scope/bypass
│ ├── Debug.tsx
│ ├── ImageTools.tsx # v1.3.0–1.6.0 full WebP/AVIF pipeline
│ ├── Notes.tsx
│ ├── Reset.tsx
│ ├── Security.tsx # v1.3.0 → v2.0.0 Security Suite
│ ├── Cron.tsx # v2.1.0 Cron Manager
│ ├── MediaManager.tsx # v2.2.0 Media Manager
│ ├── Snippets.tsx # v1.4.0
│ ├── Redirects.tsx # v1.4.0
│ ├── Email.tsx # v1.4.0
│ ├── Backup.tsx # v1.4.0
│ ├── AuditLog.tsx # v1.4.0
│ ├── Settings.tsx # v1.8.0
│ ├── Performance.tsx # v1.9.0
│ ├── ContentTools.tsx # v2.3.0
│ ├── DevTools.tsx # v2.4.0
│ ├── UpdateManager.tsx # v2.6.0
│ ├── SecurityScanner.tsx # v2.7.0
│ ├── AgencyTools.tsx # v2.8.0
│ └── Developer.tsx # v2.9.0
├── releases/
│ ├── v1.0.0.md
│ ├── v1.1.0.md
│ ├── v1.2.0.md
│ ├── v1.3.0.md
│ ├── v1.4.0.md
│ ├── v1.5.0.md
│ ├── v1.6.0.md
│ ├── v1.8.0.md
│ ├── v1.9.0.md
│ ├── v2.0.0.md
│ ├── v2.1.0.md
│ ├── v2.8.0.md
│ ├── v2.9.0.md
│ └── v2.9.2.md
├── vite.config.ts
├── tailwind.config.js
├── tsconfig.json
├── package.json
├── CHANGELOG.md
└── README.md
After activating the plugin, click WP Manager in the WordPress admin sidebar, or click the Open link in the Plugins list row next to WP Manager Pro.
Only WordPress users with the manage_options capability (Administrators). Every REST API endpoint enforces this — lower-privileged users receive a 403 Forbidden response.
Go to Maintenance in the sidebar. Use the Content tab to set your title and message, the Appearance tab to choose a gradient and icon, and the Extras tab to add a countdown timer. Click Enable Maintenance to go live, or Save Settings to persist your design without changing the active state. The maintenance page is removed automatically when you disable it or deactivate the plugin.
In Plugin Manager or Theme Manager, click the clock/history icon (⏱) on any plugin or theme row. A dialog loads all available versions from WordPress.org. Click Install next to the version you want — the plugin/theme stays active after the switch.
Go to Security → Login tab. Enter a secret slug (e.g. my-secret-login) and click Enable Protection. Your login page moves to yoursite.com/my-secret-login. Direct GET requests to wp-login.php are redirected to the homepage. Copy the new URL with the clipboard button before saving. To restore the default, click Disable Protection.
Go to Security → Login tab. Enable the Login Attempt Limiter and set your desired max attempts, counting window (seconds), and lockout duration (seconds). When an IP exceeds the limit it is automatically blocked; you can view and unlock locked-out IPs in the Lockout Log section below.
Go to Security → Hardening tab. Enter an IP address (e.g. 203.0.113.5) or a CIDR range (e.g. 10.0.0.0/24) in the IP Blocklist, add an optional note, and click Add. Blocked IPs are rejected on WordPress's init hook before any output is sent.
Go to Security → Integrity tab and click Run Integrity Check. WP Manager Pro fetches the official MD5 checksums from wordpress.org and compares every file in wp-admin/ and wp-includes/. Any modified or missing files are listed with their actual hash, expected hash, and last-modified date.
Go to Security → Two-Factor tab and click Set Up Two-Factor Auth. Scan the QR code with Google Authenticator, Authy, or any TOTP app, then enter the 6-digit code to verify and activate. Eight one-time backup codes are generated and shown once — save them somewhere safe. To disable 2FA, click Disable 2FA on the same tab.
Go to Image Tools and toggle WebP Conversion or AVIF Support on. WebP requires GD or ImageMagick. AVIF requires PHP 8.1+ with GD (imageavif function) or ImageMagick compiled with the AVIF codec. The support status cards at the top of the page show what your server supports.
Go to Users, find the user you want to impersonate, and click the person/arrow icon. WP Manager Pro generates a secure single-use token (valid for 5 minutes) and redirects you to WP Admin logged in as that user. Only existing admins can trigger this — the token is validated server-side and deleted on first use.
Yes — all file paths are validated against ABSPATH using realpath() to prevent path traversal. wp-config.php, .htaccess, and index.php are write-protected from deletion and rename. The editor is limited to text-based file types and a 2 MB read limit. That said, treat it like any code editor: incorrect edits can break your site.
The SQL Runner tab is read-only — it accepts SELECT, SHOW, DESCRIBE, and EXPLAIN statements only. Write operations (INSERT, UPDATE, DELETE, DROP, etc.) are blocked at the API level. For write operations, use the Table Data tab to insert, edit, or delete individual rows via the UI.
Click the Check Updates button (top-right of Plugin Manager or Theme Manager). This forces WordPress to re-query WordPress.org for fresh update data and immediately refreshes the list — no page reload needed.
The plugin works on Multisite but is designed for single-site use. It installs and activates on a per-site basis. Network-level management (network activation, super-admin actions) is not currently supported.
Deactivate the plugin from WP Admin → Plugins. On deactivation, the maintenance file (wp-content/maintenance.php) is automatically removed. Deactivating does not delete your notes or settings stored in wp_options — these are cleaned up if you manually delete the plugin afterward.
Notes are stored in a custom wp_wmp_notes database table created on plugin activation. They persist across plugin updates.
This can happen if another plugin or theme loads conflicting scripts on the WP Manager Pro page. Check the browser console for JavaScript errors. If you see a Content Security Policy (CSP) violation, your server's CSP headers may be blocking the inline React app. You may need to whitelist the plugin's script.
- All REST endpoints are protected by
manage_optionscapability check - WordPress nonce validation on every request (
wp_rest) - File Manager uses
realpath()path traversal prevention — all paths must resolve insideABSPATH - Critical files (
wp-config.php,.htaccess,index.php) are write-protected in delete and rename endpoints - File read is limited to text-based extensions (no binary execution)
- Login-As tokens are single-use, stored in WordPress transients, expire in 5 minutes
- Database query runner is read-only (
SELECT,SHOW,DESCRIBE,EXPLAINonly) - SVG uploads are sanitized server-side: strips
<script>,on*event attrs,javascript:hrefs,<foreignObject>,<base>tags - Username rename validates with
sanitize_user()+validate_username(), checks for conflicts - Reset Tools requires explicit
confirm: trueflag; uses WordPress core deletion functions only - v1.3.0 Admin URL protection blocks GET requests to
wp-login.phpwithout the secret key; POST/password-reset flows are unaffected - v2.0.0 Login Attempt Limiter uses WordPress transients with IP-keyed lock keys; brute-force protection fires at priority 30 on the
authenticatefilter - v2.0.0 IP Blocklist matches exact IPs and CIDR ranges via bitwise mask comparison; enforced on
initbefore any page output - v2.0.0 TOTP 2FA uses 100% native PHP (no Composer):
random_bytes,hash_hmac('sha1'), custom base32 encoder/decoder; backup codes stored as MD5 hashes - All user inputs are sanitized with
sanitize_text_field(),absint(),sanitize_hex_color(),wp_kses_post()
GPL v2 or later — see LICENSE.
See CHANGELOG.md for the full version history.

















