1. ホーム
  2. javascript

[解決済み] WooCommerce 3でデバッグする方法

2022-03-05 11:01:04

質問

私はこのチュートリアルを使ってWoocommerceのカスタム配送方法を作成しています。 https://docs.woocommerce.com/document/shipping-method-api/ が、デバッグに問題があります。配送方法がユーザーによって更新されるたびに、Woocommerceは配送の計算を呼び出します。私はこの関数を次のようにオーバーライドしました。

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

最終的には、かなり複雑な方法でコスト計算をしているのですが、このecho行がクロームコンソールに何も出力されないので、デバッグのしようがないのです。何が起こっているのか、何かアイデアはありますか?

よろしくお願いします。ありがとうございます。

解決方法は?

<ブロッククオート

これは サーバーサイドのバックグラウンド処理で、javascriptを使用しないでください。 .

1). WCログと WC_Logger クラス WooCommerceでデバッグしやすくするために

ダッシュボードから簡単にログの結果にアクセスするために。 WCロガーにログを記録することができます。 は、エラーログではなく

WooCommerce > System Status > Logs からエラーログにアクセスすることができます。

その後、必要なエラーログファイルを選択し、表示することができますので、必要なデバッグの詳細を得ることができます。エラーログは、インストールしたサイトの /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 );

<ブロッククオート

注意事項

例えば、こんな感じです。

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

関連する


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

これで、デバッグ用のデータを取得することができます。