Debugging in WordPress
The following could/should be set in the wp-config.php
file of your local(!!) installation – never do this on a live site, especially not when you got caching activated!
define( 'WP_CACHE', false );
// Show the development files for scripts/stylesheets and don't combine them
define( 'COMPRESS_CSS', false );
define( 'SCRIPT_DEBUG', true );
define( 'COMPRESS_SCRIPTS', false );
define( 'CONCATENATE_SCRIPTS', false );
define( 'ENFORCE_GZIP', false );
// PHP and WP internal debug output + log
error_reporting( E_ALL );
@ini_set( 'display_errors', 1 );
define( 'SAVEQUERIES', true );
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // file: ~/wp-content/debug.log
@ini_set( 'log_errors', 'On' );
@ini_set( 'error_log', WP_CONTENT_DIR.'/php_error.log' );
define( 'WP_DEBUG_DISPLAY', true );
Then always wrap your calls inside the following (assuming you’re ignoring the warnings and using it on your live installation):
- Turn of all caching solutions – else some visitor could still see your debug output.
- Wrap your debug inside
if ( is_user_logged_in() ) { /* debug here */; }
- Even better: Only for admins:
if ( current_user_can( 'manage_options' ) ) { /* debug here */; }
WordPress File Path & URI/URL functions
Path & URL
// The path to your current file
plugin_dir_path( __FILE__ );
// The URL to your current file
plugin_dir_url( __FILE__ );
Those ↑ come already trailing-slashed.
If you need only the foldername, wrap it inside basename()
.
If you need the admin URL, use get_admin_url( get_current_blog_id() )
. Even easier is using self_admin_url()
, which determines by itself if you’re in a network, single blog or on a user network-admin page.