久久久久久久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久久久国产精品 欧美成人h版在线观看 | 国产精品永久免费视频 | 精品美女久久久久久免费 | 亚洲一区二区三区四区五区中文 | 欧美国产中文 | 亚洲一区二区三区视频 | 国产精品网页 | 污视频免费在线观看 | 少妇一级淫片免费播放 | 国产成人福利 | 久久久这里都是精品 | 欧美亚洲视频 | 亚洲v区| a级在线免费视频 | 欧美日韩一区二区在线 | 日韩中文字幕 | 国产精品久久久久久高潮 | 色www精品视频在线观看 | 狠狠操狠狠干 | 欧美三级电影在线播放 | 91久久精品国产91久久性色tv | 成人欧美一区二区三区在线播放 | 精品久久久久一区二区国产 | 久久精品视频网站 | 福利网站在线观看 | 在线日韩欧美 | 欧美三区在线观看 | 国产精品福利视频 | 久久久久久国产精品免费 | 2018天天干天天操 | 国产精品178页 | 国产日韩欧美一区二区在线播放 | 欧美日韩成人影院 | 日本福利一区 | 精品视频一区二区三区 | 欧美自拍另类 | 欧美黄色一区 | 欧美日韩专区 | 九色91视频 | 韩日精品视频 |