Soporte » Plugins y Hacks » WooCommerce » Mostrar total sin costes de envío

  • Resuelto charlie0412

    (@charlie0412)


    Saludos grupo, necesito saber cómo mostrar el total de la compra en el checkout pero sin sumar los costes de envío, gracias de antemano.

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • Hola @charlie0412!

    Pues no conozco ningún plugin que lo haga, pero he buscado un poco y he encontrado el código para calcularlo y mostrarlo 🙂
    https://stackoverflow.com/questions/52966776/display-customer-total-spent-without-shipping-in-woocommerce

    Básicamente, esta es la función que habría que llamar para calcular y mostrar ese total:

    public static function users_custom_column( $value, $column_name, $user_id ) {
        if ( 'money_spent' == $column_name ) {
            global $wpdb;
    
            $statuses = array_map( 'esc_sql', wc_get_is_paid_statuses() );
            
            $spent    = $wpdb->get_var("
                SELECT SUM(pm2.meta_value - (pm3.meta_value + pm4.meta_value))
                FROM $wpdb->posts as p
                LEFT JOIN {$wpdb->postmeta} AS pm ON p.ID = pm.post_id
                LEFT JOIN {$wpdb->postmeta} AS pm2 ON p.ID = pm2.post_id
                LEFT JOIN {$wpdb->postmeta} AS pm3 ON p.ID = pm3.post_id
                LEFT JOIN {$wpdb->postmeta} AS pm4 ON p.ID = pm4.post_id
                WHERE   pm.meta_key   = '_customer_user'
                AND     pm.meta_value = '" . esc_sql( $user_id ) . "'
                AND     p.post_type   = 'shop_order'
                AND     p.post_status IN ( 'wc-" . implode( "','wc-", $statuses ) . "' )
                AND     pm2.meta_key  = '_order_total'
                AND     pm3.meta_key  = '_order_tax'
                AND     pm4.meta_key  = '_order_shipping'
            ");
    
            if ( ! $spent ) {
                $spent = 0;
            }
            $value = wc_price( $spent );
        }
        return $value;
    }

    Espero que esto te ayude, cuéntanos qué tal y así otras personas pueden aprender de tu experiencia 🙂

    Ya nos dices!

    Iniciador del debate charlie0412

    (@charlie0412)

    Muchas gracias por responder y disculpen la demora, pues buscando en la red he encontrado el siguiente código que ha resuelto mi problema:

    function filter_woocommerce_calculated_total( $total, $cart ) {
        
        $shipping_total = $cart->get_shipping_total();
        
        return $total - $shipping_total;
    }
    add_filter( 'woocommerce_calculated_total', 'filter_woocommerce_calculated_total', 10, 2 );
    Rocio Valdivia

    (@_dorsvenabili)

    Muchas gracias a ti, @charlie0412 por volver y contarnos cómo lo solucionaste! Seguro que muchas personas lo agradecerán 🙂

    Si no te importa, podrías marcar el hilo como resuelto? Es para el buen funcionamiento del foro.

    Muchas gracias y buena semana!

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)
  • El debate ‘Mostrar total sin costes de envío’ está cerrado a nuevas respuestas.