How do I debug a WordPress plugin?

前端 未结 6 1030
栀梦
栀梦 2020-12-03 04:19

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

相关标签:
6条回答
  • 2020-12-03 05:00

    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);
    
    0 讨论(0)
  • 2020-12-03 05:04

    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.

    0 讨论(0)
  • 2020-12-03 05:12

    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).

    0 讨论(0)
  • 2020-12-03 05:15

    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.


    Debugging in WordPress

    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 );
    

    Printing information to a log file

    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:' );


    Print directly in the rendered Html

    /* 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 );.


    FirePHP

    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?.

    0 讨论(0)
  • 2020-12-03 05:15

    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 :(

    0 讨论(0)
  • 2020-12-03 05:20
    1. Don't develop without debugging!
    2. Read this please: http://wp.smashingmagazine.com/2011/03/08/ten-things-every-wordpress-plugin-developer-should-know/

    Good luck and you may keep us updated.

    0 讨论(0)
提交回复
热议问题