如何在WooCoommerce购物车,结帐和食谱邮件的总字段中添加另一行?

时间:2018-09-25 15:50:38

标签: php wordpress woocommerce

我进行了很多搜索,以了解如何在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;
}

但这只会将行添加到配方电子邮件中的总行中。我需要更改总行,添加一个新行,其中包含名称和从购物车小计字段计算得出的值。

这就是我需要的:

enter image description here

您现在如何做到这一点?我没有计划感谢您的帮助!

更新 我不想更改原始的php文件。我知道这可能是最简单的解决方案,但由于更新和其他所有内容,我不想在WooCommerce系统中进行更改。

1 个答案:

答案 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
}

输出:

enter image description here

但是,如果用户添加优惠券,则折扣金额行将添加到新行之前。如果这对您来说不可接受,那么您别无选择,只能修改模板cart-total.phpreview-order.php,这完全没问题。