How to remove Shipping section from Woocommerce cart page
Asked Answered
W

2

7

I tried to remove that by adding bellow code to my theme functions.php but it doesn't work.

    function remove_shipping_calc_on_cart( $show_shipping ) {
    if( is_cart() ) {
        return false;
    }
    return $show_shipping;
}
add_filter( 'woocommerce_cart_ready_to_calc_shipping', 'remove_shipping_calc_on_cart', 99 );

then I tried to edit cart-totals.php file but I can't do it. could you help me to do it?

cart-totals.php file contentions below code:

/**
 * Cart totals
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/cart/cart-totals.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see         https://docs.woocommerce.com/document/template-structure/
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.3.6
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

?>

<div class="cart_totals <?php if ( WC()->customer->has_calculated_shipping() ) echo 'calculated_shipping'; ?>">

    <div class="content-block-title"><?php _e( 'Cart totals', 'woocommerce' ); ?></div>

    <div class="content-block bg-white block-shadow">
        <div class="content-block-inner pb-0">

            <?php do_action( 'woocommerce_before_cart_totals' ); ?>

            <table cellspacing="0" class="list-table">

                <tr class="cart-subtotal">
                    <th><?php _e( 'Subtotal', 'woocommerce' ); ?></th>
                    <td data-title="<?php esc_attr_e( 'Subtotal', 'woocommerce' ); ?>"><?php wc_cart_totals_subtotal_html(); ?></td>
                </tr>

                <?php foreach ( WC()->cart->get_coupons() as $code => $coupon ) : ?>
                    <tr class="cart-discount coupon-<?php echo esc_attr( sanitize_title( $code ) ); ?>">
                        <th><?php wc_cart_totals_coupon_label( $coupon ); ?></th>
                        <td data-title="<?php echo esc_attr( wc_cart_totals_coupon_label( $coupon, false ) ); ?>"><?php wc_cart_totals_coupon_html( $coupon ); ?></td>
                    </tr>
                <?php endforeach; ?>

                <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>

                    <?php do_action( 'woocommerce_cart_totals_before_shipping' ); ?>

                    <?php wc_cart_totals_shipping_html(); ?>

                    <?php do_action( 'woocommerce_cart_totals_after_shipping' ); ?>

                <?php elseif ( WC()->cart->needs_shipping() && 'yes' === get_option( 'woocommerce_enable_shipping_calc' ) ) : ?>

                    <tr class="shipping">
                        <th>حمل و نقل</th>
                        <td data-title="حمل و نقل"><?php woocommerce_shipping_calculator(); ?></td>
                    </tr>

                <?php endif; ?>

                <?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
                    <tr class="fee">
                        <th><?php echo esc_html( $fee->name ); ?></th>
                        <td data-title="<?php echo esc_attr( $fee->name ); ?>"><?php wc_cart_totals_fee_html( $fee ); ?></td>
                    </tr>
                <?php endforeach; ?>

                <?php if ( wc_tax_enabled() && 'excl' === WC()->cart->tax_display_cart ) :
                    $taxable_address = WC()->customer->get_taxable_address();
                    $estimated_text  = WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping()
                            ? sprintf( ' <small>' . __( '(estimated for %s)', 'woocommerce' ) . '</small>', WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ] )
                            : '';

                    if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) : ?>
                        <?php foreach ( WC()->cart->get_tax_totals() as $code => $tax ) : ?>
                            <tr class="tax-rate tax-rate-<?php echo sanitize_title( $code ); ?>">
                                <th><?php echo esc_html( $tax->label ) . $estimated_text; ?></th>
                                <td data-title="<?php echo esc_attr( $tax->label ); ?>"><?php echo wp_kses_post( $tax->formatted_amount ); ?></td>
                            </tr>
                        <?php endforeach; ?>
                    <?php else : ?>
                        <tr class="tax-total">
                            <th><?php echo esc_html( WC()->countries->tax_or_vat() ) . $estimated_text; ?></th>
                            <td data-title="<?php echo esc_attr( WC()->countries->tax_or_vat() ); ?>"><?php wc_cart_totals_taxes_total_html(); ?></td>
                        </tr>
                    <?php endif; ?>
                <?php endif; ?>

                <?php do_action( 'woocommerce_cart_totals_before_order_total' ); ?>

                <tr class="order-total">
                    <th><?php _e( 'Total', 'woocommerce' ); ?></th>
                    <td style="font-size: 18px;text-align: center;color: #4eb051;" data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></td>
                </tr>

                <?php do_action( 'woocommerce_cart_totals_after_order_total' ); ?>

            </table>

            <?php do_action( 'woocommerce_after_cart_totals' ); ?>

        </div>
    </div>

</div>

how I can edit these codes to remove remove Shipping from Woocommerce cart?

Weisshorn answered 19/3, 2020 at 15:27 Comment(0)
M
12

If you want to hide completely the shipping section in cart page for everybody you should add use the following (and you don't need to override any template file):

add_filter( 'woocommerce_cart_needs_shipping', 'filter_cart_needs_shipping' );
function filter_cart_needs_shipping( $needs_shipping ) {
    if ( is_cart() ) {
        $needs_shipping = false;
    }
    return $needs_shipping;
}

Code goes in functions.php file of your active child theme (or active theme). Tested and works.

Metrics answered 19/3, 2020 at 16:2 Comment(4)
I know overriding template file is not good way but putting code in my functions.php file doesn't work. I tried it again and again but it didn't work for me.Weisshorn
@VionaBeauty On my test server it works perfectly: You might need to remove any previous customizations made on the cart templates… If it doesn't work for you why you accept the answer?Metrics
@Metrics You're a font of wisdom regarding Woocommerce. Thank you for efforts on this site.Apoplexy
@Metrics - This works perfectly for disabling the shipping calculation. I needed to disable calculation in the cart – as I'm adding 50-100 products to the cart at once, and it calculates shipping for each, slowing it down. Hiding it with css, or turning it off just doesn't work. With your code, it disables the calculation completely until in the checkout page.Ferroconcrete
L
-1

To hide the shipping/delivery section on your woocommerce cart, you can do this simply by CSS.

.woocommerce-shipping-totals.shipping {
    display: none;
}
Laveta answered 26/1, 2021 at 9:52 Comment(1)
I also thought this would work, but it also hides the shipping options in checkout.Recommendation

© 2022 - 2025 — McMap. All rights reserved.