total tag name get_the_tags first codex all php wordpress woocommerce discount coupon

php - tag - Obtenga cantidad total de carritos de woocommerce



tags wordpress codex (6)

Estoy intentando aplicar un descuento al precio total de un carrito, pero solo puedo hacerlo al precio base del artículo y no al precio total. Busqué en Google y encontré esta publicación en wordpress stackoverflow:

$ amount = floatval (preg_replace (''# [^ / d.] #'', '''', $ woocommerce-> carro-> get_cart_total ())); El preg_replace elimina todo excepto caracteres decimales y dos puntos.

Si le interesa hacer cálculos matemáticos, floatval convierte el valor de una cadena en una numérica.

Intenté agregar:

$amount2 = floatval( preg_replace( ''#[^/d.]#'', '''', $woocommerce->cart->get_cart_total() ) );

y cambiando

$discount = round( (($discounting_amount / 100 ) * $this->amount)*-1, WC()->cart->dp);

a

$discount = round( (($discounting_amount / 100 ) * $amount2)*-1, WC()->cart->dp);

Pero me sale el siguiente error:

Fatal error: Call to a member function get_cart_total() on a non-object in...


Debe llamar a la variable global para asegurarse de que obtiene los valores correctos.

Si agrega

global $woocommerce;

justo antes

$amount2 = floatval( preg_replace( ''#[^/d.]#'', '''', $woocommerce->cart->get_cart_total() ) );

eso debería resolver tu problema.


Prueba esto:

WC()->cart->cart_contents_total

La función get_cart_total utiliza la función wc_price thas convierte cart_contents_total en moneda.


Esto funciona perfectamente y elimina el símbolo de moneda:

$woocommerce->cart->total;


Esto también funciona bien.

WC()->cart->total


global $woocommerce; $amount = $woocommerce->cart->cart_contents_total+$woocommerce->cart->tax_total;

También puede convertir $ cantidad en valor flotante según su requisito.


Para mostrar el total de los carros, incluidos los impuestos y descuentos, use este

$ordertotal = wp_kses_data( WC()->cart->get_total() );