If you do not have access to wp-config.php
but you do have access to the theme (or plugin) editor, you can add a code snippet to essentially do the same thing as the WP_DEBUG
constant. The wp_debug_mode()
function uses the value of this and a few other constants to set the display and log error functions in PHP. You can run the same PHP functions directly with actually touching the WP_DEBUG
constant or the wp-config.php
file.
Here are the key PHP functions your code snippet can use:
error_reporting( E_ALL )
- sets PHP to display all errors, warnings, and notices.
ini_set( 'display_errors', 1 )
- sets PHP to display errors on the screen; use 0 to supress (although if debugging is not enabled in wp-config.php
this will already be 0 so you could omit it altogether).
ini_set( 'log_errors', 1)
- sets PHP to log errors. Like the value above, this can be omitted if you're not going to log errors. If you do log errors, you'll need an error log you can get to. The default set by wp_debug_mode()
is going to be inaccessible. My example will set it as a text file in the theme directory so you can read it with the theme editor.
ini_set( 'error_log', $log_path )
- sets the location of the error log (mentioned above).
Here's the code snippet:
add_action( 'template_redirect', 'my_enable_debug_mode' );
function my_enable_debug_mode() {
// Turn on error reporting.
error_reporting( E_ALL );
// Sets to display errors on screen. Use 0 to turn off.
ini_set( 'display_errors', 1 );
// Sets to log errors. Use 0 (or omit) to not log errors.
ini_set( 'log_errors', 1 );
// Sets a log file path you can access in the theme editor.
$log_path = get_template_directory() . '/debug.txt';
ini_set( 'error_log', $log_path );
}
To summarize, if you need to debug, do not have access to wp-config.php
but do have access to the theme editor, you can add this code snippet to the functions.php
file to enable debugging on screen along with a txt log file in the theme folder.