如何在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 ) );
现在您将获得用于调试的数据。
相关文章