{"id":295328,"date":"2026-04-08T13:06:01","date_gmt":"2026-04-08T13:06:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/globus-debug-control\/"},"modified":"2026-04-13T19:27:54","modified_gmt":"2026-04-13T19:27:54","slug":"globus-debug-control","status":"publish","type":"plugin","link":"https:\/\/szl.wordpress.org\/plugins\/globus-debug-control\/","author":21117379,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.2.5","stable_tag":"2.2.5","tested":"6.9.4","requires":"5.2","requires_php":"7.4","requires_plugins":null,"header_name":"GLOBUS Debug Control","header_author":"Yevhen Leonidov","header_description":"Full WordPress debug mode control: error type filtering, display and logging management, php-error body class removal.","assets_banners_color":"","last_updated":"2026-04-13 19:27:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/globus.studio","header_author_uri":"https:\/\/leonidov.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":73,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.2.4":{"tag":"2.2.4","author":"globusstudio","date":"2026-04-08 13:05:47"},"2.2.5":{"tag":"2.2.5","author":"globusstudio","date":"2026-04-13 19:27:54"}},"upgrade_notice":{"2.2.5":"<p>Major update: eight admin tabs including WP_DEBUG toggle, error log viewer, cron monitor, transient manager, autoloaded options inspector, HTTP request logger, and constants viewer.<\/p>","2.2.0":"<p>Added optional MU-plugin dropin to catch errors from plugins that load before GLOBUS Debug Control.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3501690,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3501690,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.2.4","2.2.5"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4567,94,14925,12113,19330],"plugin_category":[59],"plugin_contributors":[250136],"plugin_business_model":[],"class_list":["post-295328","plugin","type-plugin","status-publish","hentry","plugin_tags-cron","plugin_tags-debug","plugin_tags-error-log","plugin_tags-transients","plugin_tags-wp-config","plugin_category-utilities-and-tools","plugin_contributors-globusstudio","plugin_committers-globusstudio"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/globus-debug-control\/assets\/icon-128x128.png?rev=3501690","icon_2x":"https:\/\/ps.w.org\/globus-debug-control\/assets\/icon-256x256.png?rev=3501690","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Working with <code>WP_DEBUG<\/code> enabled often floods the screen with notices and deprecation warnings from third-party plugins and themes - things you neither wrote nor can fix. GLOBUS Debug Control lets you filter out the noise and focus on what actually matters.<\/p>\n\n<p>All settings are available in <strong>Settings - GLOBUS Debug Control<\/strong>. The plugin provides eight tabs: Settings, WP_DEBUG, Error Log, Cron Tasks, Transients, Autoloaded, HTTP Log, and Constants. No code editing needed.<\/p>\n\n<h4>Settings tab<\/h4>\n\n<p><strong>Choose which errors to see<\/strong><\/p>\n\n<p>Turn off specific PHP error types independently:<\/p>\n\n<ul>\n<li>Notices - informational messages that rarely indicate a real problem<\/li>\n<li>Deprecated - warnings about outdated functions, usually from third-party code<\/li>\n<li>Warnings - optional, keep them on if you are actively debugging<\/li>\n<li>Strict - PHP 7 strict standards messages (not applicable in PHP 8+)<\/li>\n<\/ul>\n\n<p><strong>Control error display<\/strong><\/p>\n\n<p>Three modes for showing errors on screen:<\/p>\n\n<ul>\n<li><strong>Inherit<\/strong> - follows your <code>wp-config.php<\/code> settings (default, non-intrusive)<\/li>\n<li><strong>On<\/strong> - always show errors, useful during active development<\/li>\n<li><strong>Off<\/strong> - hide all errors from screen even if <code>WP_DEBUG_DISPLAY<\/code> is on<\/li>\n<\/ul>\n\n<p>Errors are always hidden automatically during AJAX requests, REST API calls, WP-Cron, and WP-CLI, so your API responses stay clean regardless of the display setting.<\/p>\n\n<p><strong>Error logging<\/strong><\/p>\n\n<p>Enable logging to capture errors in a file instead of (or in addition to) showing them on screen:<\/p>\n\n<ul>\n<li>Set a custom log file path (absolute or relative to <code>wp-content\/<\/code>)<\/li>\n<li>Set a maximum log file size (1-100 MB); the file rotates automatically when the limit is reached<\/li>\n<li>Defaults to <code>wp-content\/debug.log<\/code> if no path is specified<\/li>\n<\/ul>\n\n<p><strong>Remove the php-error CSS class<\/strong><\/p>\n\n<p>When WordPress encounters a PHP error, it adds a <code>php-error<\/code> class to the <code>&lt;body&gt;<\/code> tag, which can break your page layout. This option removes it via both CSS and JavaScript so your front-end and admin look normal even in debug mode.<\/p>\n\n<p><strong>Early error interception (optional)<\/strong><\/p>\n\n<p>WordPress loads plugins in alphabetical order. If another plugin throws an error before GLOBUS Debug Control initialises, those errors will not be filtered. Enabling the <strong>MU-plugin dropin<\/strong> installs a small helper file into <code>wp-content\/mu-plugins\/<\/code> that runs before any regular plugin, ensuring your filter settings apply from the very start of the request. The dropin is removed automatically when the plugin is deactivated or uninstalled.<\/p>\n\n<h4>WP_DEBUG tab<\/h4>\n\n<p>Toggle the five most important debug constants directly from the admin panel without editing <code>wp-config.php<\/code>:<\/p>\n\n<ul>\n<li><code>WP_DEBUG<\/code> - master debug switch<\/li>\n<li><code>WP_DEBUG_LOG<\/code> - write errors to a log file<\/li>\n<li><code>WP_DEBUG_DISPLAY<\/code> - show errors on screen<\/li>\n<li><code>SCRIPT_DEBUG<\/code> - use unminified core JS\/CSS<\/li>\n<li><code>SAVEQUERIES<\/code> - log all database queries<\/li>\n<\/ul>\n\n<p>The plugin locates your <code>wp-config.php<\/code> automatically and patches it in place, adding the constant if it is missing or updating the existing value. Commented-out defines and block-comment sections are never touched. The current status of <code>WP_DEBUG<\/code> is always visible as a badge in the plugin header.<\/p>\n\n<h4>Error Log tab<\/h4>\n\n<p>Displays the contents of your <code>debug.log<\/code> file directly in the admin panel using a CodeMirror editor with line numbers. Lines are color-coded by severity: fatal\/parse errors, warnings, notices\/deprecations, and cron-related messages. The log is paginated (200 lines per page), supports live polling for new entries, and can be downloaded or cleared with one click. Large log files (over 2 MB) are read from the tail to keep memory usage low.<\/p>\n\n<h4>Cron Tasks tab<\/h4>\n\n<p>Lists all scheduled WordPress cron events with hook name, next run time, recurrence interval, and arguments. Summary cards show total events, overdue count, orphaned hooks, and duplicates. Overdue events are highlighted. You can run any event immediately or delete orphaned hooks directly from the table.<\/p>\n\n<h4>Transients tab<\/h4>\n\n<p>Displays database-stored WordPress transients from the options table with key name, data size, and expiration time. Transients stored in an external object cache (Redis, Memcached) are not shown. Expired transients are highlighted. You can delete individual transients or purge all expired ones in one click. Summary cards show total count, expired count, and total data size.<\/p>\n\n<h4>Autoloaded tab<\/h4>\n\n<p>Lists autoloaded options from <code>wp_options<\/code> sorted by data size (top 200). Shows the option name and value size. Summary cards display total autoloaded row count and total payload size with warnings when thresholds are exceeded (over 800 KB or over 100 rows). This is a read-only diagnostic view to help identify options that inflate every WordPress request.<\/p>\n\n<h4>HTTP Log tab<\/h4>\n\n<p>Captures outgoing WordPress HTTP API requests (<code>wp_remote_get<\/code>, <code>wp_remote_post<\/code>, etc.) via the <code>http_api_debug<\/code> hook. Capturing must be explicitly enabled and stores up to 100 entries (6-hour TTL). Each entry shows the request URL, HTTP method, status code, response time, and transport class. Useful for spotting slow or failing external API calls.<\/p>\n\n<h4>Constants tab<\/h4>\n\n<p>Displays all WordPress-related PHP constants defined at runtime, grouped by category: Debug, Performance, Security, Database, Auth and Salts, Paths, and Other WP_* constants. Sensitive values (database password, auth keys, salts) are automatically masked. This is a read-only reference view.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>globus-debug-control<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings - GLOBUS Debug Control<\/strong> and configure as needed.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20require%20wp_debug%20to%20be%20enabled%3F\"><h3>Does the plugin require WP_DEBUG to be enabled?<\/h3><\/dt>\n<dd><p>The plugin is always active, but error filtering only takes effect when <code>WP_DEBUG<\/code> is set to <code>true<\/code> in <code>wp-config.php<\/code>. Error display and logging settings work independently of <code>WP_DEBUG<\/code>. You can toggle <code>WP_DEBUG<\/code> and related constants from the <strong>WP_DEBUG<\/strong> tab without editing any files manually.<\/p><\/dd>\n<dt id=\"will%20it%20hide%20errors%20in%20ajax%20or%20rest%20api%20responses%3F\"><h3>Will it hide errors in AJAX or REST API responses?<\/h3><\/dt>\n<dd><p>Yes. Errors are always suppressed from output during AJAX requests, REST API calls, WP-Cron, and WP-CLI regardless of your display settings. This prevents broken JSON responses.<\/p><\/dd>\n<dt id=\"what%20is%20the%20mu-plugin%20dropin%20and%20do%20i%20need%20it%3F\"><h3>What is the MU-plugin dropin and do I need it?<\/h3><\/dt>\n<dd><p>It is an optional small file installed into <code>wp-content\/mu-plugins\/<\/code>. It makes GLOBUS Debug Control run earlier than any regular plugin, so errors thrown during early plugin initialisation are also filtered. Enable it if you see errors from plugins that load before this one. The dropin is removed automatically when the plugin is deactivated or uninstalled.<\/p><\/dd>\n<dt id=\"where%20is%20the%20log%20file%20saved%3F\"><h3>Where is the log file saved?<\/h3><\/dt>\n<dd><p>By default, errors are logged to <code>wp-content\/debug.log<\/code>. You can set a custom path in the plugin settings. The log file rotates automatically once it exceeds the size limit you set. The <strong>Error Log<\/strong> tab lets you read, download, and clear the log directly from the admin panel.<\/p><\/dd>\n<dt id=\"can%20i%20see%20scheduled%20cron%20tasks%3F\"><h3>Can I see scheduled cron tasks?<\/h3><\/dt>\n<dd><p>Yes. The <strong>Cron Tasks<\/strong> tab lists all registered WordPress cron events with their next run time, interval, and arguments. Overdue events are highlighted. You can run individual events immediately or delete orphaned hooks.<\/p><\/dd>\n<dt id=\"can%20i%20inspect%20transients%20and%20autoloaded%20options%3F\"><h3>Can I inspect transients and autoloaded options?<\/h3><\/dt>\n<dd><p>Yes. The <strong>Transients<\/strong> tab shows all transients with size and expiry info and lets you delete individual entries or purge all expired ones. The <strong>Autoloaded<\/strong> tab lists the heaviest autoloaded options so you can identify what inflates your option payload.<\/p><\/dd>\n<dt id=\"what%20does%20the%20http%20log%20tab%20do%3F\"><h3>What does the HTTP Log tab do?<\/h3><\/dt>\n<dd><p>It captures outgoing HTTP requests made by WordPress core, plugins, and themes. Enable capturing, then reload a page to see which URLs are being called, their status codes, and response times. Up to 100 entries are stored for 6 hours.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20on%20a%20live%20site%3F\"><h3>Can I use this on a live site?<\/h3><\/dt>\n<dd><p>Yes. The recommended setup for a production site is: suppress all error types, disable error display, enable logging to a file, and keep the <code>php-error<\/code> class removal active. The diagnostic tabs (Cron Tasks, Transients, Autoloaded, HTTP Log, Constants) are read-only and safe to use at any time.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.5<\/h4>\n\n<ul>\n<li>Added WP_DEBUG tab: toggle WP_DEBUG, WP_DEBUG_LOG, WP_DEBUG_DISPLAY, SCRIPT_DEBUG, SAVEQUERIES directly from the admin panel<\/li>\n<li>WP_DEBUG status indicator badge shown in plugin header<\/li>\n<li>Added Error Log viewer with color-coded lines, pagination, live polling, download, and one-click clear<\/li>\n<li>Added Cron Tasks viewer with summary cards, overdue highlighting, immediate run, and orphan cleanup<\/li>\n<li>Added Transients viewer with size\/expiry info, per-row delete, and bulk purge of expired entries<\/li>\n<li>Added Autoloaded Options viewer showing the heaviest autoloaded rows with size warnings<\/li>\n<li>Added HTTP Log tab for capturing outgoing WordPress HTTP API requests with status codes and timing<\/li>\n<li>Added Constants viewer displaying all WP-related PHP constants grouped by category with sensitive value masking<\/li>\n<li>Plugin settings UI reorganised into eight tabs: Settings, WP_DEBUG, Error Log, Cron Tasks, Transients, Autoloaded, HTTP Log, Constants<\/li>\n<li>Improved error log rendering for large files (tail-read for files over 2 MB)<\/li>\n<li>Added nonce verification to log status polling endpoint<\/li>\n<li>Switched log download to streaming output for lower memory usage<\/li>\n<\/ul>\n\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>Replaced inline style\/script output with wp_add_inline_style() and wp_add_inline_script()<\/li>\n<li>Renamed option key from gdc_options to globus_debug_control_options with automatic migration<\/li>\n<li>Updated Author URI<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Fixed minor bugs<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Removed deprecated load_plugin_textdomain() call (auto-loaded since WP 4.6)<\/li>\n<li>Improved output escaping<\/li>\n<li>Added singleton protection<\/li>\n<li>Added index.php files for directory listing protection<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fixed minor bugs<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added optional MU-plugin dropin for early error interception<\/li>\n<li>Improved log file management<\/li>\n<li>Added automatic log file rotation<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added automatic error suppression in API contexts (AJAX, REST API, Cron, CLI)<\/li>\n<li>Added removal of the php-error CSS body class via JavaScript and CSS<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete plugin rewrite<\/li>\n<\/ul>","raw_excerpt":"WordPress debug toolkit: filter errors, toggle WP_DEBUG, view error logs, monitor cron, transients, HTTP requests, and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/295328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=295328"}],"author":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/globusstudio"}],"wp:attachment":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=295328"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=295328"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=295328"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=295328"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=295328"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=295328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}