I\'ve recently inherited a WordPress plugin that has a few bugs in it. My problem is that I\'m also new to WordPress and I don\'t know how to log debug messages so that I ca
I'm aware that my answer comes several years after the original question but, since I recently had the same exact problem and still couldn't find a satisfying solution, I coded a plugin for that.
It specifically addresses the OP need:
I really just need a way to create a popup or log to a console.
Hope it helps all the plugin/theme developers out there, who are looking for a quick and easy way to debug their code https://wordpress.org/plugins/bugfu-console-debugger
Just install it and call the logging method from your PHP code to log straight to the browser JavaScript console.
BugFu::log($your_string-array-object);
The general PHP debugging strategy is to use print_r( $var )
statements and refresh the page. Simple and easy. If you want to step into the code Xdebug is what you want to install.
According to your comment where you Much rather use a system where debug messages can be turned off and on in one place
:
It can be done in WordPress. There is a constant called WP_DEBUG that you can set to true
or false
from your wp-config.php
file in your WordPress folder (that file where you add database parameters
).
So, you can use:
if( WP_DEBUG ){
echo "<script> alert('Hello World!'); </script>";
}
The alert will show only when you have WP_DEBUG set to true
(for example on a development version of the website like on your localhost) while it won't show on your production version of the website(You just have to set WP_DEBUG
to false there).
There's this excellent Q&A at WordPress Stack Exchange, lots of knowledgeable folks explaining their debugging techniques: How do you debug plugins?
In the Javascript arena you basically need <script>console.log('the value is' + variable);</script>
. And use Google Chrome inspector and/or Firebug.
In PHP, it depends on where things are happening or where you want the output.
Oficial documentation in the Codex.
Example wp-config.php
for Debugging
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );
The following uses an OSX/Unix/Linux system path, adjust for Windows.
/* Log to File
* Description: Log into system php error log, usefull for Ajax and stuff that FirePHP doesn't catch
*/
function my_log_file( $msg, $name = '' )
{
// Print the name of the calling function if $name is left empty
$trace=debug_backtrace();
$name = ( '' == $name ) ? $trace[1]['function'] : $name;
$error_dir = '/Applications/MAMP/logs/php_error.log';
$msg = print_r( $msg, true );
$log = $name . " | " . $msg . "\n";
error_log( $log, 3, $error_dir );
}
Then, in you code call the function my_log_file( $post, 'The post contents are:' );
/* Echo variable
* Description: Uses <pre> and print_r to display a variable in formated fashion
*/
function echo_log( $what )
{
echo '<pre>'.print_r( $what, true ).'</pre>';
}
And wherever needed use it like: echo_log( $post );
.
This extension will log information directly in the browser console. Refer to the following Q&A at WordPress Answers: How to use WP-FirePHP extension?.
By using Visual Studio and a dev tools php debugger extension, you can actually debug it step by step rather than logging them and trying to figure out the variable values during the run time. There might be other alternatives as well.
PS: It is not free :(
Good luck and you may keep us updated.