亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

還可以根據產品自定義字段更改 WooCommerce Minicart 商品價格

還可以根據產品自定義字段更改 WooCommerce Minicart 商品價格

PHP
撒科打諢 2023-10-22 22:04:51
基于允許客戶設置產品價格(禮品卡)并在 WooCommerce 中金額至少為 100 時添加到購物車,這回答了我的最初問題 - 我剩下一個關于 WooCommerce 迷你車的小問題。產品價格不會根據客戶使用禮品卡字段提交的價格進行更新。所以我有兩種不同的解決方案,但都失敗了。這是我嘗試過的:add_filter('woocommerce_widget_cart_item_quantity', 'custom_wc_widget_cart_item_quantity', 10, 3 );function custom_wc_widget_cart_item_quantity( $cart, $cart_item, $cart_item_key ) {    foreach ( $cart->get_cart() as $cart_item ) {        if ( isset ( $cart_item['giftcard_product_price'] ) ) {        $cart_item['data']->set_price( $cart_item['giftcard_product_price'] );        return sprintf( '<span class="quantity">%s &times; <span class="woocommerce-Price-amount amount">%s <span class="woocommerce-Price-currencySymbol">%s</span></span></span>', $cart_item['quantity'], $cart_item['giftcard_product_price'] );        }    }}它不起作用:小車一片空白。然后我也嘗試過:add_filter('woocommerce_cart_item_price','modify_cart_product_price',10,3);function modify_cart_product_price( $price, $cart_item, $cart_item_key){    $price = $cart_item['data']->set_price($cart_item['giftcard_product_price']);    return $price;}我能得到的任何幫助將不勝感激。
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

使用的正確鉤子是woocommerce_cart_item_price這樣的:


add_filter( 'woocommerce_cart_item_price', 'giftcard_cart_item_price', 10, 3 );

function giftcard_cart_item_price( $price_html, $cart_item, $cart_item_key ) {

    $giftcard_key = 'giftcard_product_price';


    if( isset( $cart_item[$giftcard_key] ) ) {

        $args = array( 'price' => floatval( $cart_item[$giftcard_key] ) );


        if ( WC()->cart->display_prices_including_tax() ) {

            $product_price = wc_get_price_including_tax( $cart_item['data'], $args );

        } else {

            $product_price = wc_get_price_excluding_tax( $cart_item['data'], $args );

        }

        return wc_price( $product_price );

    }

    return $price_html;

}

現在自定義價格將正確顯示在迷你車中......


查看完整回答
反對 回復 2023-10-22
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

可變產品籃子中的完整變體免費。


/**

 * Initialize Session cart

 */

add_action('init', 'init_cart_session', 1);

function init_cart_session() {

    if (!session_id()) {

        session_start();

    }

    if (!isset($_SESSION['cart'])) {

        $_SESSION['cart'] = [];

    }

}


/**

 * Custom size correct

 */

add_action('woocommerce_before_calculate_totals', 'woo_size_correct', 10, 6);

function woo_size_correct() {

    global $woocommerce;


    if (isset($_POST['attribute_pa_size']) && $_POST['attribute_pa_size'] == 'custom') 

{

        $_SESSION['cart'][$_POST['variation_id']] = $_POST['custom'];

    }


    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {

        if (array_key_exists($cart_item['data']->variation_id, $_SESSION['cart'])) {

            $cart_item['data']->set_price($_SESSION['cart'][$cart_item['data']->variation_id]);

        }

    }

}

add_filter('woocommerce_cart_item_price', 'woo_size_mini_cart_correct', 10, 6);

function woo_size_mini_cart_correct($price_html, $cart_item, $cart_item_key) {

    global $woocommerce;


    if (array_key_exists($cart_item['data']->variation_id, $_SESSION['cart'])) {

        $args = array('price' => floatval($_SESSION['cart'][$cart_item['data']->variation_id]));


        if (WC()->cart->display_prices_including_tax()) {

            $product_price = wc_get_price_including_tax($cart_item['data'], $args);

        } else {

            $product_price = wc_get_price_excluding_tax($cart_item['data'], $args);

        }

        return wc_price($product_price);

    }

    return $price_html;

}




查看完整回答
反對 回復 2023-10-22
  • 2 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號