Получить общую стоимость ваукомера

Я пытаюсь применить скидку на общую стоимость тележек, но я могу сделать это только по базовой цене товара, а не по всей цене. я Googled и наткнулся на это сообщение в WordPack stackoverflow:

$ amount = floatval (preg_replace ('# [^\d.] #', '', $woocommerce-> cart-> get_cart_total())); Preg_replace устраняет все, кроме десятичных символов и двоеточий.

Если вы хотите сделать математику с ней, floatval преобразует значение из строки в числовое.

Я попытался добавить:

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

и изменение

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

в

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

Но я получаю следующую ошибку:

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

Ответ 1

Вы должны вызвать глобальную переменную, чтобы убедиться, что она получает правильные значения.

Если вы добавите

 global $woocommerce;

прямо перед

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

что должно решить вашу проблему.

Ответ 2

Попробуй это:

WC()->cart->cart_contents_total

Функция get_cart_total использует функцию wc_price, которая преобразует значение cart_contents_total в валюту.

Ответ 3

Это отлично работает и удаляет символ валюты:

     $woocommerce->cart->total;

Ответ 4

Это также работает nicelly.

WC()->cart->total

Ответ 5

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

Вы также можете конвертировать $ amount в значение float в соответствии с вашим требованием.

Ответ 6

Чтобы показать общее количество телег, включая налоги и скидки, используйте это

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

Ответ 7

$ totalamount = $woocommerce-> cart-> cart_contents_total;

echo $ totalamount;