从WooCommerce购物车中删除总计部分,同时保留小计行

Remove Totals section from WooCommerce Cart while keeping Subtotal line

提问人:Tetra84 提问时间:9/15/2023 最后编辑:LoicTheAztecTetra84 更新时间:9/16/2023 访问量:62

问:

我从这里找到了一些代码: 如何从购物车和结帐页面 woocommerce 中删除订单总额

这将允许我从购物车页面中删除整个“购物车总计”块:

//removal of 'Total' block on cart page
add_action( 'woocommerce_cart_collaterals', 'remove_cart_totals', 9 );
function remove_cart_totals(){
    // Remove cart totals block
    remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 );

    // Add back "Proceed to checkout" button (and hooks)
    echo '<div class="cart_totals">';
    do_action( 'woocommerce_before_cart_totals' );

    echo '<div class="wc-proceed-to-checkout">';
    do_action( 'woocommerce_proceed_to_checkout' );
    echo '</div>';

    do_action( 'woocommerce_after_cart_totals' );
    echo '</div><br clear="all">';
}

但是,它的工作原理是,Id 仍然喜欢保持小计可见。基本上,只需删除“购物车总数”和总数部分即可。这可能吗?

购物车页面图片

我尝试了上面的代码,它可以摆脱总计块中的所有内容,但我想尝试保留小计。

PHP 模板 钩子-WooCommerce 购物车

评论


答:

1赞 LoicTheAztec 9/15/2023 #1

要在删除所有其他总计的同时保持购物车小计显示,请使用以下命令:

add_action( 'woocommerce_cart_collaterals', 'keep_only_cart_subtotal', 9 );
function keep_only_cart_subtotal(){
    // Remove cart totals block
    remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 );

    // Add back Subtotal, "Proceed to checkout" button (and hooks)
    printf('<div class="cart_totals%s">', ( WC()->customer->has_calculated_shipping() ) ? ' calculated_shipping' : '');

    do_action( 'woocommerce_before_cart_totals' );
    
    ?>
    <table cellspacing="0" class="shop_table shop_table_responsive">
    <tr class="cart-subtotal">
        <th><?php esc_html_e( 'Subtotal', 'woocommerce' ); ?></th>
        <td data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>"><?php wc_cart_totals_subtotal_html(); ?></td>
    </tr>
    </table>
    <?php

    echo '<div class="wc-proceed-to-checkout">';

    do_action( 'woocommerce_proceed_to_checkout' );

    echo '</div>';

    do_action( 'woocommerce_after_cart_totals' );

    echo '</div><br clear="all">';
}

代码进入子主题的 functions.php 文件(或插件)。经过测试并工作。