如何在WooCommerce 3+中进行调试
如何在WooCommerce 3+中进行调试
我正在使用这个教程https://docs.woocommerce.com/document/shipping-method-api/为Woocommerce创建自定义的运输方式,但是在调试时遇到了问题。每当用户更新运输方式时,Woocommerce都会调用calculate shipping函数。我已经用以下代码重写了这个函数。
public function calculate_shipping( $package ) { // 这是你将添加费率的地方 $rate = array( 'idea' => $this->id, 'label' => $this->title, 'cost' => '90.00', 'calc_tax' => 'per_item' ); echo ""; $this->add_rate($rate); }
最后,我有一种相当复杂的计算"cost"的方法,但是我没有办法调试它,因为这个echo语句没有在chrome控制台中输出任何内容。有什么想法吗?
非常感谢您的帮助。谢谢。
如何在WooCommerce 3+中进行调试
在WooCommerce 3+中进行调试可能会遇到问题。下面是一个出现问题的示例以及解决方法。
首先,创建一个PHP辅助函数:
function console_output($data) { $output = $data; if (is_array($output)) $output = implode(',', $output); echo ""; }
然后,可以像这样使用它:
public function calculate_shipping( $package ) { // 这是您将添加费率的地方 $rate = array( 'idea' => $this->id, 'label' => $this->title, 'cost' => '90.00', 'calc_tax' => 'per_item' ); console_output("Calculating shipping"); $this->add_rate($rate); }
这将创建如下输出:
Debug Objects: Calculating shipping
以上就是在WooCommerce 3+中进行调试的方法。
如何在WooCommerce 3+中进行调试
在WooCommerce中进行调试时出现的问题及解决方法如下:
问题原因:
由于这是服务器端的后台进程,所以不要使用JavaScript。
解决方法:
1) 使用WooCommerce的WC日志和WC_Logger类进行更好的调试
为了方便从仪表板访问日志的结果,您可以使用WC记录器而不是错误日志进行日志记录。
您可以通过转到WooCommerce>系统状态>日志来访问错误日志。
然后,您将能够选择和“查看”您需要的错误日志文件,从而获得所需的调试详细信息。错误日志也位于您的站点安装中的/wc-logs文件夹中。
运行捕获异常的堆栈跟踪(示例):
//将任何异常记录到WC日志 $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 );
注意:
- 自WooCommerce 3以来,WC_Logger方法已更新,因此可以按上下文和严重性分组日志记录。
- 由于即将过时,使用WC_Logger的log()方法而不是add()方法。
例如:
$logger = wc_get_logger(); $logger->debug( 'debug message', array( 'source' => 'my-extension' ) );
相关链接:
- 2017年1月WooCommerce开发博客:在WooCommerce 3中改进日志记录
- WC_Logger可用方法的文档
2) 使用WordPress WP_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 ) );
现在您将获得用于调试的数据。
以上是在WooCommerce 3+中进行调试的方法。