如何在WooCommerce 3+中进行调试

我正在使用本教程https://docs.woocommerce.com/document/shipping-method-api/为WooCommerce创建自定义运输方法,但我在调试时遇到了问题。每当用户更新发货方法时,WooCommerce都会调用Calculate Shipping。我已经用下面的代码覆盖了这个函数。

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'
    );
    echo "<script>console.log('Calculating shipping');</script>";
    $this->add_rate($rate);
  }
最后,我有一个相当复杂的计算"成本"的方法,但我无法对其进行调试,因为那条回应行不会在Chrome控制台中产生任何输出。你知道这是怎么回事吗?

任何帮助都将不胜感激。谢谢。


解决方案

因为这是服务器端的后台进程,所以请不要使用Java脚本。

1)。WC日志和WooCommerce中的WC_Logger Class以便更好地调试

若要从仪表板轻松访问日志结果,您可以记录到WC记录器,而不是错误日志。

您可以转到WooCommerce&>系统状态&>日志来访问错误日志。

然后,您将能够选择和查看所需的错误日志文件,从而为您提供所需的调试详细信息。错误日志还位于站点安装的/wc-Logs文件夹中。

对捕获的异常运行堆栈跟踪(示例):

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

备注:

  • WC_Logger methods自WooCommerce 3:起已更新,因此可以按上下文和严重性对日志进行分组。

  • 由于upcoming deprecation(感谢@Vizz85),请使用WC_Logger log() method而不是add() method。

例如:

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

相关:

  • 开发WooCommerce博客(2017年1月):Improved logging in WooCommerce 3
  • WC_Logger available methods
  • 文档

2.使用WordPressWP_DEBUG日志(作为替代方案)

a)首先编辑wp-config.php文件,添加以下行以启用调试(如果已定义这些行,则编辑值):

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
在记录错误时,它们应该出现在wp-content/debug.log中。您可以在文本编辑器中打开此文件。

b)在您的代码中:使用以下内容(其中$variable是要在错误日志中显示的变量:

error_log( print_r( $variable, true ) );

现在您将获得用于调试的数据。

相关文章