How to debug in WooCommerce 3 How to debug in WooCommerce 3 wordpress wordpress

How to debug in WooCommerce 3


As this is a background process on server side, don't use javascript.

1). WC Logs and the WC_Logger Class in WooCommerce for better debugging

To access the results of the log easily from the dashboard, you can log to a WC logger rather than the error log.

You can access error logs by going to WooCommerce > System Status > Logs.

Then you will be able to choose and "view"the error log file you need, giving you the debugging details that you need. Error logs are also located in the /wc-logs folder within your site install.

Running a stack trace on a caught exception (example):

// Log any exceptions to a WC logger$log = new WC_Logger();$log_entry = print_r( $e, true );$log_entry .= 'Exception Trace: ' . print_r( $e->getTraceAsString(), true );$log->log( 'new-woocommerce-log-name', $log_entry );

Notes:

For example:

$logger = wc_get_logger();$logger->debug( 'debug message', array( 'source' => 'my-extension' ) );

Related:


2). Debugging with WordPress WP_DEBUG Log (as an alternative)

a) First edit your wp-config.php file adding the following lines to enable debug (if these are already defined, edit the values):

define( 'WP_DEBUG', true );define( 'WP_DEBUG_LOG', true );define( 'WP_DEBUG_DISPLAY', false );

As errors are logged, they should appear in wp-content/debug.log. You can open this file in a text editor.

b) On your code: Use the following (where $variable is the variable to be displayed in the error log:

error_log( print_r( $variable, true ) );

Now you will get the data for debugging.


First Creat PHP helper function

 function console_output($data) { $output = $data;if (is_array($output))    $output = implode(',', $output);  echo "<script>console.log('Debug Objects: " . $output . "' );</script>"; }

Then you can use it like this:

public function calculate_shipping( $package ) {// This is where you'll add your rates$rate = array(  'idea' => $this->id,  'label' => $this->title,  'cost' => '90.00',  'calc_tax' => 'per_item'     );   console_output("Calculating shipping");    $this->add_rate($rate);   }

This will create an output like this:

  Debug Objects: Calculating shipping