我一直在尝试通过执行 WC()->cart->get_shipping_total() 在操作挂钩“woocommerce_checkout_update_order_review”中获取最新的运费信息,但它似乎包含之前的运费总额,而不是当前的运费总额。仅当用户删除字段信息并重新输入时,运输总价值才看起来是“当前”值。我需要运费总额来进行稍后的计算。
我尝试了多种不同的方式来获取最新的运输总量信息:
function wp_kama_woocommerce_checkout_update_order_review_action( $post_data )
{
wc_add_notice(WC()->cart->get_shipping_total(), 'notice');
mail("[email protected]", "shipping total", WC()->cart->get_shipping_total() );
}
add_action( 'woocommerce_checkout_update_order_review', 'wp_kama_woocommerce_checkout_update_order_review_action' );
function wp_kama_woocommerce_checkout_update_order_review_action( $post_data )
{
wc_add_notice(print_r($_POST, true), 'notice');
mail("[email protected]", "shipping total", print_r($_POST, true) );
}
add_action( 'woocommerce_checkout_update_order_review', 'wp_kama_woocommerce_checkout_update_order_review_action' );
function wp_kama_woocommerce_checkout_update_order_review_action( $post_data )
{
parse_str( $post_data, $post_data );
wc_add_notice($post_data, 'notice');
mail("[email protected]", "shipping total", print_r( $post_data, true ) );
}
add_action( 'woocommerce_checkout_update_order_review', 'wp_kama_woocommerce_checkout_update_order_review_action' );
This stackoverflow 帖子有类似的经历,但他们能够通过操作挂钩“woocommerce_checkout_update_order_review”提供的参数变量访问数据,但该变量中的运输方法似乎不是前面所述的当前值。
由于
woocommerce_checkout_update_order_review
在结帐 Ajax 事件之前触发,因此您可以获得之前的运费总额。
相反,您可以使用以下挂钩之一:
woocommerce_review_order_before_shipping
woocommerce_review_order_after_shipping
woocommerce_review_order_before_order_total
woocommerce_review_order_after_order_total
所以你的代码将是例如:
add_action( 'woocommerce_review_order_after_shipping', 'action_wc_review_order_after_shipping' );
function action_wc_review_order_after_shipping() {
wc_add_notice( 'Shipping total: ' . WC()->cart->get_shipping_total(), 'notice');
}