我注意到在查看订单明细和电子邮件确认中,它反映了折扣行,但没有说明所使用的实际折扣代码。此外,如果折扣代码为$ 0.00(出于特殊跟踪目的,有时有时会有$ 0的代码),则根本不会显示该代码。我整天都在努力寻找解决方案-有人可以为此提供一些指导吗?谢谢。
到目前为止,我已经完成了这项工作,以获取实际的优惠券代码:
add_action( 'woocommerce_order_details_after_order_table', 'custom_woocommerce_coupon_line' );
function custom_woocommerce_coupon_line( $order_id ) {
$order = wc_get_order( $order_id );
// An order can have no used coupons or also many used coupons
$coupons = $order->get_used_coupons();
$coupons = count($coupons) > 0 ? implode(',', $coupons) : '';
echo $coupons;
}
但是无法弄清楚如何使其进入“折扣”行...也不为什么当折扣行是使用$ 0代码的$ 0项目时,它甚至没有出现。
更新-使用零值处理折扣
以下代码将在订单总数行中的“折扣”行之后,显示该订单应用的优惠券:
add_filter( 'woocommerce_get_order_item_totals', 'add_coupons_codes_line_to_order_totals_lines', 10, 3 );
function add_coupons_codes_line_to_order_totals_lines( $total_rows, $order, $tax_display ) {
// Exit if there is no coupons applied
if( sizeof( $order->get_used_coupons() ) == 0 )
return $total_rows;
$new_total_rows = []; // Initializing
foreach($total_rows as $key => $total ){
$new_total_rows[$key] = $total;
if( $key == 'discount' ){
// Get applied coupons
$applied_coupons = $order->get_used_coupons();
// Insert applied coupon codes in total lines after discount line
$new_total_rows['coupon_codes'] = array(
'label' => __('Applied coupons:', 'woocommerce'),
'value' => implode( ', ', $applied_coupons ),
);
}
}
return $new_total_rows;
}
在客户订单视图上显示,已应用2张优惠券:
附加代码版本:处理零折扣金额的已应用优惠券,请改用此:
add_filter( 'woocommerce_get_order_item_totals', 'add_coupons_codes_line_to_order_totals_lines', 10, 3 );
function add_coupons_codes_line_to_order_totals_lines( $total_rows, $order, $tax_display ) {
$has_used_coupons = sizeof( $order->get_used_coupons() ) > 0 ? true : false;
// Exit if there is no coupons applied
if( ! $has_used_coupons )
return $total_rows;
$new_total_rows = []; // Initializing
$applied_coupons = $order->get_used_coupons(); // Get applied coupons
foreach($total_rows as $key => $total ){
$new_total_rows[$key] = $total;
// Adding the discount line for orders with applied coupons and zero discount amount
if( ! isset($total_rows['discount']) && $key === 'shipping' ) {
$new_total_rows['discount'] = array(
'label' => __( 'Discount:', 'woocommerce' ),
'value' => wc_price(0),
);
}
// Adding applied coupon codes line
if( $key === 'discount' || isset($new_total_rows['discount']) ){
// Get applied coupons
$applied_coupons = $order->get_used_coupons();
// Insert applied coupon codes in total lines after discount line
$new_total_rows['coupon_codes'] = array(
'label' => __('Applied coupons:', 'woocommerce'),
'value' => implode( ', ', $applied_coupons ),
);
}
}
return $new_total_rows;
}
在电子邮件通知上显示带有0折扣的优惠券:
代码进入您的活动子主题(或活动主题)的function.php文件。经过测试和工作。
这就是我要寻找的。不幸的是,我的软件的代码提示在上述两个优惠券版本上都出现了大括号错误?我无法自己调试它,所以如果有人能发现错误,我将不胜感激。