久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在 Woocommerce 簡單產品中添加一個將更改價格的選

Add a select field that will change price in Woocommerce simple products(在 Woocommerce 簡單產品中添加一個將更改價格的選擇字段)
本文介紹了在 Woocommerce 簡單產品中添加一個將更改價格的選擇字段的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我需要在單個產品中添加一個帶有自定義價格的選擇,如下面的屏幕截圖所示;

I need to add a select with a custom price in the single product as seen in the screenshots below;

這個想法是,通過從 (select) 中選擇一個選項,您可以將其提高到基本價格.

The idea is that by selecting an option from (select) you can increase it to the base price.

不使用變體,因為我的想法是做更多的事情,但我需要關于如何做到這一點的幫助.

Without using the variations, since my idea is to do other things more, but I need help on how to do this.

我已經看到了稱為附加組件"的插件,但我不想使用插件.

I've seen plugins that do it are called "Add-On" but I do not want to use a plugin.

推薦答案

要在簡單產品(如可變產品)中添加一個選擇字段,該字段將根據下拉選擇的值更新基本價格,請嘗試以下操作:

To add a select field in simple products (like in variable products) that will update base price depending on the dopdown selected value, try this:

// Frontend: custom select field in product single pages
add_action( 'woocommerce_before_add_to_cart_button', 'fabric_length_product_field' );
function fabric_length_product_field() {
    global $product;

    if( $product->is_type('variable') ) return; // Not variable products

    $domain = 'woocommerce';
    $text   = array(
        __('cards', $domain),
        __('card', $domain),
        __('Total', $domain),
        get_woocommerce_currency_symbol(),
    );

    // Select Options array
    $options = array(
        ""          => __('Select package'),
        "12.00" => "1000 {$text[0]} - {$text[3]}0.012/{$text[1]} - {$text[2]} {$text[3]}12.00",
        "15.00" => "2000 {$text[0]} - {$text[3]}0.008/{$text[1]} - {$text[2]} {$text[3]}15.00",
        "20.00" => "3000 {$text[0]} - {$text[3]}0.007/{$text[1]} - {$text[2]} {$text[3]}20.00",
        "25.00" => "4000 {$text[0]} - {$text[3]}0.006/{$text[1]} - {$text[2]} {$text[3]}25.00",
    );

    // Select field
    woocommerce_form_field('cards_pack', array(
        'type'          => 'select',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('Cards Pack selection', $domain),
        'required'      => true,
        'options'       => $options,
    ),'');

    // Data to be transmitted to jQuery
    $base_price = (float) wc_get_price_to_display( $product );
    $prices = array(
        ''      => wc_price($base_price),
        '12.00' => wc_price($base_price + 12),
        '15.00' => wc_price($base_price + 15),
        '20.00' => wc_price($base_price + 20),
        '25.00' => wc_price($base_price + 25),
    )

    // jQuery code
    ?>
    <script>
    jQuery(function($){
        var a = <?php echo json_encode($prices); ?>,
            b = 'p.price',
            c = 'select[name="cards_pack"]';

        $(c).on( 'change', function(){
            $.each( a, function( key, value ){
                if( $(c).val() == key )
                    $(b).html(value);
            });
        });
    });
    </script>
    <?php
}

// Add selected pack data as custom data to cart items
add_filter( 'woocommerce_add_cart_item_data', 'add_pack_data_to_cart_item_data', 20, 2 );
function add_pack_data_to_cart_item_data( $cart_item_data, $product_id ){
    if( ! isset($_POST['cards_pack']) )
        return $cart_item_data;

    $pack_price = (float) sanitize_text_field( $_POST['cards_pack'] );
    if( empty($pack_price) )
        return $cart_item_data;

    if($pack_price == 12.00) $cards = 1000;
    elseif($pack_price == 15.00) $cards = 2000;
    elseif($pack_price == 20.00) $cards = 3000;
    elseif($pack_price == 25.00) $cards = 4000;

    $product    = wc_get_product($product_id); // The WC_Product Object
    $base_price = (float) $product->get_price();

    // New price calculation
    $new_price = $base_price + $pack_price;

    // Prepare and save the data array
    $cart_item_data['pack_data'] = array(
        'cards'     => (int)   $cards,
        'pack'      => (int)   $pack_price,
        'new_price' => (float) $new_price,
    );
    $cart_item_data['unique_key'] = md5( microtime() . rand() ); // Make each item unique

    return $cart_item_data;
}

// Set conditionally a custom item price
add_action('woocommerce_before_calculate_totals', 'set_cutom_cart_item_price', 20, 1);
function set_cutom_cart_item_price( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach (  $cart->get_cart() as $cart_item ) {
        if ( isset( $cart_item['pack_data']['new_price'] ) )
            $cart_item['data']->set_price( $cart_item['pack_data']['new_price'] );
    }
}


// Display custom data in  checkout page
add_filter( 'woocommerce_get_item_data', 'display_custom_cart_item_data', 10, 2 );
function display_custom_cart_item_data( $cart_data, $cart_item ) {
    $domain        = 'woocommerce';

    if ( isset( $cart_item['pack_data']['new_price'] ) ){
        $cart_data[] = array('name' => __( 'Cards pack', $domain ),
            'value' => $cart_item['pack_data']['cards'] );
    }
    return $cart_data;
}

代碼位于活動子主題(或活動主題)的 function.php 文件中.經過測試和工作.

Code goes in function.php file of your active child theme (or active theme). Tested and work.

這篇關于在 Woocommerce 簡單產品中添加一個將更改價格的選擇字段的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Add programmatically a downloadable file to Woocommerce products(以編程方式將可下載文件添加到 Woocommerce 產品)
Get today#39;s total orders count for each product in Woocommerce(獲取今天 Woocommerce 中每種產品的總訂單數)
Add Custom registration fields in WooCommerce and phone field validation issue(在 WooCommerce 和電話字段驗證問題中添加自定義注冊字段)
Add custom columns to admin products list in WooCommerce 3(在 WooCommerce 3 中將自定義列添加到管理產品列表)
Customizing checkout quot;Place Orderquot; button output html(自定義結帳“下訂單按鈕輸出html)
Add birthday field to WooCommerce my account and admin user page(將生日字段添加到 WooCommerce 我的帳戶和管理員用戶頁面)
主站蜘蛛池模板: 爱爱无遮挡 | 亚洲国产成人在线观看 | 欧美色999 | 一区二区国产精品 | 黄色在线 | 日本在线视频一区二区 | 天天干.com | 欧美日韩三级在线观看 | 国产农村妇女精品一二区 | 狠狠操电影 | www.久久久久久久久久久久 | 激情一区二区三区 | 成人精品一区二区 | 久久久精 | 久久精品网 | 中文字幕一区在线观看视频 | 奇米影视首页 | 亚洲视频一区在线播放 | 亚洲精品中文字幕中文字幕 | 一区二区av | 国产日韩欧美一区二区 | 国产免费又黄又爽又刺激蜜月al | 日韩成人在线播放 | 国产一区二区久久 | 亚洲性免费 | 麻豆精品国产91久久久久久 | 国产精品日日摸夜夜添夜夜av | 国产粉嫩尤物极品99综合精品 | 在线视频中文字幕 | 亚洲国产欧美国产综合一区 | 日韩视频精品 | 亚洲高清在线观看 | 91视频大全| 一区二区三区久久 | 亚洲免费在线观看 | 国产精品久久久久久久一区探花 | 亚洲一区二区三区免费视频 | 啪啪免费网站 | 色婷婷国产精品 | 国产美女在线免费观看 | 青青久在线视频 |