我进行了很多搜索,以了解如何在WooCommerce商店的总成本内添加自定义行,并检查了问题,但找不到解决方案。这是我尝试过的:
add_filter( 'woocommerce_get_order_item_totals', 'bbloomer_add_recurring_row_email', 10, 2 );
function bbloomer_add_recurring_row_email( $total_rows, $myorder_obj ) {
$total_rows['recurr_not'] = array(
'label' => __( 'Rec:', 'woocommerce' ),
'value' => 'blabla'
);
return $total_rows;
}
但这只会将行添加到配方电子邮件中的总行中。我需要更改总行,添加一个新行,其中包含名称和从购物车小计字段计算得出的值。
这就是我需要的:
您现在如何做到这一点?我没有计划感谢您的帮助!
更新 我不想更改原始的php文件。我知道这可能是最简单的解决方案,但由于更新和其他所有内容,我不想在WooCommerce系统中进行更改。
答案 0 :(得分:1)
如果您查看cart-total.php
的源代码和结帐review-order.php
,您会发现有一个钩子woocommerce_review_order_before_shipping
,使您可以将行添加到所需位置,但是您应该使发送处于活动状态,因为除非WC()->cart->needs_shipping() && WC()->cart->show_shipping()
为true,否则将不会执行此操作。
例如,您可以执行以下操作:
add_action( 'woocommerce_cart_totals_before_shipping', 'add_row' , 99);
add_action( 'woocommerce_review_order_before_shipping', 'add_row' , 99);
function add_row() {
?>
<tr>
<th>test</th>
<td>test td</td>
</tr>
<?php
}
输出:
但是,如果用户添加优惠券,则折扣金额行将添加到新行之前。如果这对您来说不可接受,那么您别无选择,只能修改模板cart-total.php
和review-order.php
,这完全没问题。