## Debug & Caching ...simply doesn't work. If you'd load a page (on a cached request) and doing all those funky things like checking if you're logged in, if you're using an _administrator_-role account, etc. than all this would be bypassed by the caching plugin. The cache gets applied to the resulting HTML page, not the PHP code generating it. > (...) would a cache plugin like W3 Total Cache help? **NO**, simply said. Extended explanation: It would make it much more worse. You'd cache all data (if the cache gets generated based on your request) and everyone would get the debug dump served. So do yourself a favor and > ALWAYS deactivate caching if you're debugging on a live server. ## How to debug on a live site. In one of my debug plugins, that I use on live servers, I got the following check on top to abort if none of the criteria is met. // Nothing to see here if ( ! is_admin() AND isset( $_GET['debug'] ) AND 'true' === $_GET['debug'] AND current_user_can( 'manage_options' ) AND ( defined( 'DOING_AJAX' ) AND DOING_AJAX ) AND ( defined( 'DOING_CRON' ) AND DOING_CRON ) ) return; So debug output will only be visible if you have the query arg `"?debug=true"` or `"/debug/true"` (depending on permalink settings) appended. You can also write into a log file (but that shouldn't be done on heavy traffic sites). Here are the lines for a `wp-config.php` file, that will suppress errors, but write them to your log file. # DEBUG define( 'WP_DEBUG', true ); // file: ~/WP_CONTENT_DIR/debug.log define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', true );