[解決済み] WooCommerce 3でデバッグする方法
質問
私はこのチュートリアルを使って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 );
<ブロッククオート
注意事項
-
WC_Logger
メソッド は、WooCommerce 3 から更新されました。 そのため、ロギングはコンテキストと重大度によってグループ化することができます。 -
使用方法
WC_Logger
log()
メソッド の代わりにadd()
メソッド により 今後の非推奨 (おかげさまで Vizz85 ) .
例えば、こんな感じです。
$logger = wc_get_logger();
$logger->debug( 'debug message', array( 'source' => 'my-extension' ) );
関連する
- WooCommerceブログの開発 (2017年1月) : 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 ) );
これで、デバッグ用のデータを取得することができます。
関連
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】最大呼び出しスタックサイズ超過エラーとその修正方法とは?
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み】エラー:リクエストのエンティティが大きすぎる
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】SyntaxError: 期待された式が、'<'を得た。
-
[解決済み】Vueが定義されていない
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー