更改 Woocommerce 自定义文本的代码

问题描述 投票:0回答:1

如果可能的话,我希望使用我的面料商店中的一些代码获得一些帮助,该代码添加了一条自定义消息来帮助客户订购多少面料。

您可以在这里看到消息是如何呈现的以及如何随着数量的变化而变化: https://thefabricboutique.co.uk/product/pastel-abstract-viscose-linen-blend/

加0.5米6.25英镑

我想知道如何将其更改为以下代码:

0.5米加1个单位(0.5米6.25英镑)

所以只需添加“添加 1 个单位”(1 随着数量的变化而变化) 以及价格的括号。其中具有与第一部分相同的仪表更改功能。

如果有人可以帮助我,谢谢!

add_action( 'woocommerce_before_add_to_cart_quantity', 'display_product_total_amount_html' );
function display_product_total_amount_html() {
    global $product;
    if( ! has_term( array('fabric'), 'product_cat', $product->get_id() ) ) return;
    
    $metres_per_qty  = 0.5;
    $display_price   = wc_get_price_to_display($product);
    $formatted_price = '<span class="price-amount">'. number_format($display_price, 2) . '</span>';

    // Output product total price amount
    $price_string = sprintf( __('Add %s for %s', 'woocommerce'),  
        '<span class="qty-metres">' . $metres_per_qty . ' metre</span>',
        str_replace('0.00', $formatted_price, wc_price(0)) );

    // Output product total price amount
    echo '<div class="total-price_qty" style="margin-bottom:20px;">'.$price_string.'</div>'
    ?>
    <script>
    jQuery(function($){
        $('input[name=quantity]').on( 'input change', function(){
            const qty = $(this).val();
            if ( qty != 0 ) {
                const lengthTxT = qty > 2 ? ' metres' : ' metre';
                $('.total-price_qty .price-amount').html( parseFloat(<?php echo $display_price; ?> * qty).toFixed(2) );
                $('.total-price_qty .qty-metres').html( parseFloat(<?php echo $metres_per_qty; ?> * qty)+lengthTxT );
            }
        });
    });
    </script>
    <?php 
}

我尝试自己重新编码,但我总是在某个地方搞砸!

woocommerce product code-snippets
1个回答
0
投票

将您的代码替换为以下内容:

add_action( 'woocommerce_before_add_to_cart_quantity', 'display_product_total_amount_html' );
function display_product_total_amount_html() {
    global $product;
    if(  has_term( array('fabric'), 'product_cat', $product->get_id() ) ) return;
    
    $metres_per_qty  = 0.5;
    $display_price   = wc_get_price_to_display($product);
    $formatted_price = '<span class="price-amount">'. number_format($display_price, 2) . '</span>';

    // Output product total price amount
    $price_string = sprintf( __('Add %s for %s (%s for %s)', 'woocommerce'),
        '<span class="qty-units">1 unit</span>', 
        '<span class="qty-metres">' . $metres_per_qty . ' metre</span>',
        str_replace('0.00', $formatted_price, wc_price(0)), 
        '<span class="qty-metre2">' . $metres_per_qty . ' metre</span>' );

    // Output product total price amount
    echo '<div class="total-price_qty" style="margin-bottom:20px;">'.$price_string.'</div>'
    ?>
    <script>
    jQuery(function($){
        $('input[name=quantity]').on( 'input change', function(){
            const qty = $(this).val();
            if ( qty != 0 ) {
                const qtyTxT    = qty > 2 ? ' units' : ' unit',
                      lengthTxT = qty > 2 ? ' metres' : ' metre';
                $('.total-price_qty .qty-units').html( parseInt(qty)+qtyTxT );
                $('.total-price_qty .qty-metres').html( parseFloat(<?php echo $metres_per_qty; ?> * qty)+lengthTxT );
                $('.total-price_qty .price-amount').html( parseFloat(<?php echo $display_price; ?> * qty).toFixed(2) );
                $('.total-price_qty .qty-metre2').html( parseFloat(<?php echo $metres_per_qty; ?> * qty)+lengthTxT );
            }
        });
    });
    </script>
    <?php 
}

你会得到类似的东西:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.