当前位置: 首页 > 知识库问答 >
问题:

添加一个签出复选框字段,以便在Woocommerce中启用百分比费用

公西俊能
2023-03-14

在Woocommerce结账页面中,我试图在结账页面上添加一个复选框,并将其称为“分期付款”。

勾选复选框以添加3%的总金额时。

例如,如果总金额为100$,它将在总金额之前添加一个额外部分,称之为分期付款(3%=$3),并将该金额添加到总金额中。

共有1个答案

夔桐
2023-03-14

基于“基于Woocommerce中自定义单选按钮的动态运费”,这是一个轻度更改的版本,在计费字段后有一个复选框,选中复选框时将启用3%的费用:

// Add a custom checkbox fields after billing fields
add_action( 'woocommerce_after_checkout_billing_form', 'add_custom_checkout_checkbox', 20 );
function add_custom_checkout_checkbox(){

    // Add a custom checkbox field
    woocommerce_form_field( 'installment_fee', array(
        'type'  => 'checkbox',
        'label' => __(' Installment 3% fee'),
        'class' => array( 'form-row-wide' ),
    ), '' );
}

// Remove "(optional)" label on "Installement checkbox" field
add_filter( 'woocommerce_form_field' , 'remove_order_comments_optional_fields_label', 10, 4 );
function remove_order_comments_optional_fields_label( $field, $key, $args, $value ) {
    // Only on checkout page for Order notes field
    if( 'installment_fee' === $key && is_checkout() ) {
        $optional = '&nbsp;<span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . ')</span>';
        $field = str_replace( $optional, '', $field );
    }
    return $field;
}

// jQuery - Ajax script
add_action( 'wp_footer', 'checkout_fee_script' );
function checkout_fee_script() {
    // Only on Checkout
    if( is_checkout() && ! is_wc_endpoint_url() ) :

    if( WC()->session->__isset('enable_fee') )
        WC()->session->__unset('enable_fee')
    ?>
    <script type="text/javascript">
    jQuery( function($){
        if (typeof wc_checkout_params === 'undefined') 
            return false;

        $('form.checkout').on('change', 'input[name=installment_fee]', function(e){
            var fee = $(this).prop('checked') === true ? '1' : '';

            $.ajax({
                type: 'POST',
                url: wc_checkout_params.ajax_url,
                data: {
                    'action': 'enable_fee',
                    'enable_fee': fee,
                },
                success: function (result) {
                    $('body').trigger('update_checkout');
                },
            });
        });
    });
    </script>
    <?php
    endif;
}

// Get Ajax request and saving to WC session
add_action( 'wp_ajax_enable_fee', 'get_enable_fee' );
add_action( 'wp_ajax_nopriv_enable_fee', 'get_enable_fee' );
function get_enable_fee() {
    if ( isset($_POST['enable_fee']) ) {
        WC()->session->set('enable_fee', ($_POST['enable_fee'] ? true : false) );
    }
    die();
}

// Add a custom dynamic 3% fee
add_action( 'woocommerce_cart_calculate_fees', 'custom_percetage_fee', 20, 1 );
function custom_percetage_fee( $cart ) {
    // Only on checkout
    if ( ( is_admin() && ! defined( 'DOING_AJAX' ) ) || ! is_checkout() )
        return;

    $percent = 3;

    if( WC()->session->get('enable_fee') )
        $cart->add_fee( __( 'Installment fee', 'woocommerce')." ($percent%)", ($cart->get_subtotal() * $percent / 100) );
}

代码进入活动子主题(或活动主题)的function.php文件。测试和工作。

账单结帐字段后显示的字段:

仅当选中复选框时,才会激活“分期付款”费用百分比:

 类似资料:
  • 需要根据表单复选框元素添加自定义费用到购物车。基于购物车中产品类别的当前操作非常有效,并增加了自定义送货费,但客户可以选择免费提货。复选框选中交付触发器WooCommerce可以添加自定义费用操作吗? 使用例子从"执行一个动作对复选框选中或未选中的事件在html表单"可以. Change(函数)函数传递(id){如果(this.checked){add_action自定义购物车费用? 选中复选框时

  • 在Woocommerce结帐部分,我试图添加一个复选框,以添加其他产品。 我有一个工作代码,添加费用并在单击复选框时更新购物车,但我希望它添加一个产品而不是附加费: 这是复选框的代码 代码是有效的… 现在,我尝试更改代码以添加产品: 但是没有成功。任何帮助将不胜感激。

  • 在Woocommerce结帐页面中,我正在尝试在结帐页面上添加一个复选框 我参考了这些文章 WooCommerce自定义结账字段添加费用订购ajax 用于在WooCommerce中添加/删除自定义费用的复选框字段 添加一个结帐复选框字段,在WooCommerce中启用百分比费用 它不能像我希望的那样工作。我做错了什么? 任何帮助都很感激。

  • 我使用更新费动态基于单选按钮在WooCommerce结账答案代码解决方案,工作非常好,我添加复选框字段与不同的价格为每一个,价格变化反映在结账。 但是我需要一些帮助:当我选择一种附加税的包装时,它会出现在订单区的后端,但只显示价格,我也想显示标题。 复选框选项有: 如何使其在订单上显示名称?是否可以将复选框改为选择字段?

  • 我正在尝试根据是否已选中自定义复选框向签出添加费用。我真的很接近让这项工作,但我有问题获得后的价值观,以确定是否应申请或不收费。 以下是我自定义字段的代码: 这是可行的,而且字段显示得非常完美。 在我的主题中form-checkout.php的底部,我添加了以下javascript,以在检查字段时更新购物车总数: 这将更新订单总数并运行以下代码(这就是问题所在): 我知道这部分被调用是因为如果我去

  • 使用基于WooCommerce结帐应答代码中的选择字段添加动态费用,我成功地在复选框更改中添加了新费用: 未选中时,如何删除费用? 这是一个礼品包装选项,如果选择额外的费用将在结账时添加到总额中。如果未选择,则应删除费用并更新结账。