第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

基于 WooCommerce 產(chǎn)品自定義輸入字段的折扣

基于 WooCommerce 產(chǎn)品自定義輸入字段的折扣

PHP
拉丁的傳說 2022-10-14 10:26:02
我試圖根據(jù)單個(gè)產(chǎn)品頁面中的數(shù)量字段為用戶提供折扣。基本上,該網(wǎng)站出售門票,成人和兒童的價(jià)格不同。所以我在單個(gè)產(chǎn)品頁面中創(chuàng)建了輸入字段,這樣用戶就可以輸入他要購買的成人人數(shù)和兒童人數(shù)。在產(chǎn)品管理員中,我有一個(gè)“兒童折扣”的 ACF(高級(jí)自定義字段),所以在購物車中我想根據(jù)兒童數(shù)量給予這個(gè)折扣。例如,假設(shè)用戶購買該產(chǎn)品的 5 張門票,成人 3 張,兒童 2 張,我想計(jì)算這 2 個(gè)兒童的折扣。到目前為止我已經(jīng)嘗試過:add_action( 'woocommerce_before_add_to_cart_button', 'custom_product_price_field', 5 );function custom_product_price_field(){    echo '<div class="custom-text text">              <p>Quantity of adults:</p>              <input type="text" name="qtty_adults" value="" title="Quantity Adults" class="qtty-field">          </div>          <div class="custom-text text">              <p>Quantity of children:</p>              <input type="text" name="qtty_kids" value="" title="Quantity Kids" class="qtty-field">          </div>';}add_action('woocommerce_cart_calculate_fees' , 'add_user_discounts');function add_user_discounts( WC_Cart $cart ){    global $product;    $qtty_kids = (float) sanitize_text_field( $_POST['qtty_kids'] );    $discount_per_kid = (float) get_field('children_discount', $product->id);    $discount = $qtty_kids * $discount_per_kid;    $cart->add_fee( 'Discount for children', -$discount);}這樣做的折扣總是 $0誰能給我一些關(guān)于如何實(shí)現(xiàn)這一點(diǎn)的幫助?
查看完整描述

1 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

你的代碼有點(diǎn)過時(shí)了,有一些錯(cuò)誤,還有很多遺漏的東西來得到你所期望的……


請(qǐng)嘗試以下操作(更新):


add_action( 'woocommerce_before_add_to_cart_button', 'custom_product_price_field', 5 );

function custom_product_price_field(){


    echo '<div class="custom-text text">

        <p>'.__("Quantity of adults:").'</p>

        <input type="text" name="qtty_adults" value="" title="'.__("Quantity Adults").'" class="qtty-field">

    </div>

    <div class="custom-text text">

        <p>'.__("Quantity of children:").'</p>

        <input type="text" name="qtty_kids" value="" title="'.__("Quantity Kids").'" class="qtty-field">

    </div>';

}


// Add selected add-on option as custom cart item data

add_filter( 'woocommerce_add_cart_item_data', 'filter_add_cart_item_data_callback', 10, 3 );

function filter_add_cart_item_data_callback( $cart_item_data, $product_id, $variation_id ) {

    if ( isset( $_POST['qtty_kids'] )  && $children_discount = get_field( 'children_discount', $product_id ) ) {

        $cart_item_data['children_discount'] = (float) $children_discount - (float) sanitize_text_field( $_POST['qtty_kids'] );

        $cart_item_data['unique_key']        = md5( microtime().rand() ); // Make each item unique

    }

    return $cart_item_data;

}


// Set a discount based a product custom field(s)

add_action('woocommerce_cart_calculate_fees' , 'add_children_discount', 10, 1 );

function add_children_discount( $cart ){

    if ( is_admin() && ! defined('DOING_AJAX') )

        return;


    if ( did_action('woocommerce_cart_calculate_fees') >= 2 )

        return;


    $discount = 0; // Initialising


    // Loop through cart items

    foreach ( $cart->get_cart() as $cart_item ) {

        if( isset( $cart_item['children_discount'] ) ) {

            $discount += $cart_item['children_discount'];

        }

    }


    if ( $discount > 0 )

        $cart->add_fee( __("Discount for children", "woocommerce"), -$discount );

}

測(cè)試和工作。


查看完整回答
反對(duì) 回復(fù) 2022-10-14
  • 1 回答
  • 0 關(guān)注
  • 90 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)