MITS Profiler
MITS Profiler
Description
MITS Profiler adds a diagnostic bar to any page by appending ?mits_prof=1 to the URL. It captures timing data from the moment PHP starts and presents it in a dark-themed panel at the bottom of the page — visible only to logged-in administrators.
Tabs included:
- Timeline — absolute and relative timing between WordPress lifecycle hooks (plugins_loaded init wp_head wp_footer)
- Hooks — top 50 slowest action/filter hooks with total time and call count
- Options — most-queried WordPress options + full autoload audit with sizes
- Plugins — loaded PHP file sizes per plugin (proxy for load time)
- Assets — all enqueued scripts and styles, external ones highlighted
- HTTP — outgoing wp_remote_* requests with response time and status
- SQL — all database queries with slow-query highlighting (requires SAVEQUERIES)
- PHP — PHP version, OPcache status and hit rate, memory and execution limits
Key features:
- Zero HTTP loopback — works behind Cloudflare, reverse proxies and strict firewall rules
- No external dependencies or requests
- Admin-only: the panel and all data are never shown to guests
- Export to JSON or CSV for offline analysis
- Works on front-end pages, WooCommerce pages, and WP Admin
SQL query logging requires adding the following to wp-config.php:
define('SAVEQUERIES', true);
Installation
- Upload the
mits-profilerfolder to/wp-content/plugins/ - Activate the plugin in Plugins Installed Plugins
- Go to MITS Profiler in the admin menu to open the control panel
- Click Profiluj w nowej karcie or manually append
?mits_prof=1to any URL
Screenshots
Faq
No. The profiler only activates when ?mits_prof=1 is present in the URL, and even then it only renders its output for logged-in administrators. Regular visitors are completely unaffected.
Yes. Unlike profilers that rely on HTTP loopback requests (which Cloudflare blocks), MITS Profiler measures time inline within the same PHP process — no outgoing requests needed.
Add define('SAVEQUERIES', true); to your wp-config.php before the line /* That's all, stop editing! */. Remember to remove it when done, as it adds overhead on every page load.
Make sure you are logged in as an administrator and that the URL contains ?mits_prof=1 (or &mits_prof=1 if the URL already has a query string).
Reviews
Changelog
1.3.0
- All CSS/JS now enqueued via wp_add_inline_style() and wp_add_inline_script() — no direct / output
- Admin page assets enqueued through admin_enqueue_scripts hook
- Static profiler bar functions extracted from render() to a registered script handle
- Added wpaluchmits to Contributors
- All echoed variables escaped or cast to int/float; $row() closure wraps every cell in wp_kses()
1.2.0
- Added full MITS wordmark logo in admin panel header
- Admin notices from other plugins are now hidden on the profiler page
- Fixed $_SERVER sanitization (wp_unslash + sanitize_text_field)
- Added phpcs:ignore annotations for intentional direct DB queries
1.1.0
- Added SQL tab with slow-query highlighting (requires SAVEQUERIES)
- Added PHP environment tab with OPcache stats
- Added JSON and CSV export buttons
- Added HTTP outgoing request tracking via wp_remote_*
1.0.0
- Initial release: Timeline, Hooks, Options, Plugins, Assets tabs


