29

カートの合計金額に割引を適用しようとしていますが、商品の基本価格に対してのみ適用でき、全体の価格には適用できません。私はグーグルで検索し、ワードプレスのスタックオーバーフローでこの投稿に出くわしました:

$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...
4

12 に答える 12

34

グローバル変数を呼び出して、正しい値が取得されるようにする必要があります。

追加すると

 global $woocommerce;

直前

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

それはあなたの問題を解決するはずです。

于 2014-03-07T13:04:48.437 に答える
8

これは完全に機能し、通貨記号を削除します:

     $woocommerce->cart->total;
于 2014-07-26T09:22:14.057 に答える
7
global $woocommerce;
    $amount = $woocommerce->cart->cart_contents_total+$woocommerce->cart->tax_total;

必要に応じて、$amount を float 値に変換することもできます。

于 2016-04-13T05:58:32.793 に答える