カートの合計価格に割引を適用しようとしていますが、アイテムの基本価格にのみ適用でき、全体の価格には適用できません。グーグルで出会った this wordpress 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...
グローバル変数を呼び出して、正しい値を取得する必要があります。
追加する場合
global $woocommerce;
直前
$amount2 = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );
これで問題が解決するはずです。
これを試して:
WC()->cart->cart_contents_total
Get_cart_total関数はwc_price関数を使用し、thasはcart_contents_totalを通貨に変換します。
これもうまくいきます。
WC()->cart->total
これは完全に機能し、通貨記号を削除します。
$woocommerce->cart->total;
global $woocommerce;
$amount = $woocommerce->cart->cart_contents_total+$woocommerce->cart->tax_total;
要件に応じて、$ amountをfloat値に変換することもできます。
2018年後半の時点で、最善の方法はget_cart_contents_total()
を使用することです。これは、割引後のカート内のアイテムの合計です。
WC()->cart->get_cart_contents_total(); // Float
より具体的なニーズに合わせて他の方法を利用できます。 ドキュメント をご覧ください。
税と割引を含むカートの合計を表示するには、これを使用します
$ordertotal = wp_kses_data( WC()->cart->get_total() );
$ totalamount = $ woocommerce-> cart-> cart_contents_total;
echo $ totalamount;