程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了根据 WooCommerce 结帐中的复选框添加或删除固定费用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_197_0@如何解决根据 WooCommerce 结帐中的复选框添加或删除固定费用? 开发过程中遇到根据 WooCommerce 结帐中的复选框添加或删除固定费用的问题如何解决?下面主要结合日常开发的经验,给出你关于根据 WooCommerce 结帐中的复选框添加或删除固定费用的解决方法建议,希望对你解决根据 WooCommerce 结帐中的复选框添加或删除固定费用有所启发或帮助;

使用 Add a dynamic fee based on a SELEct field in WooCommerce checkout 答案代码,我设法为复选框更改添加了新费用:

add_action('woocommerce_after_checkouT_Billing_form','checkout_shipPing_form_packing_addition',20);
function checkout_shipPing_form_packing_addition()
{
    $domain = 'woocommerce';

    echo '<tr class="packing-SELEct"><th>' . __('EMBRulHO?',$domain) . '</th><td>';

    $chosen   = WC()->session->get('chosen_packing');

    // Add a custom checkBox fIEld
    woocommerce_form_fIEld('chosen_packing',array(
        'type'      => 'checkBox','class'     => array('form-row-wIDe packing'),'label'         => __('$5','woocommerce'),'required'  => false,),$chosen);

    echo '</td></tr>';
}

// jquery - AJAX script
add_action('wp_footer','checkout_shipPing_packing_script');
function checkout_shipPing_packing_script()
{
    // Only checkout page
    if (is_checkout() && !is_wc_endpoint_url()) :

        WC()->session->__unset('chosen_packing');
?>
        <script type="text/JavaScript">
            jquery(function($) {
                $('form.checkout').on('change','input#chosen_packing',function() {
                    var p = $(this).prop('checked');    
                    console.log(p);
                    $.AJAX({
                        type: 'POST',url: wc_checkout_params.AJAX_url,data: {
                            'action': 'woo_get_AJAX_data','packing': p,},success: function(result) {
                            $('body').trigger('update_checkout');
                            console.log('response: ' + result); // just for tesTing | TO BE REMOVED
                        },error: function(error) {
                            console.log(error); // just for tesTing | TO BE REMOVED
                        }
                    });
                });
            });
        </script>
<?php
    endif;
}

// php AJAX (Receiving request and saving to WC session)
add_action('wp_AJAX_woo_get_AJAX_data','woo_get_AJAX_data');
add_action('wp_AJAX_nopriv_woo_get_AJAX_data','woo_get_AJAX_data');
function woo_get_AJAX_data()
{
    if (isset($_POST['packing'])) {
        $packing = sanitize_key($_POST['packing']);
        WC()->session->set('chosen_packing',$packing);
        echo Json_encode($packing);
    }
    dIE(); // Alway at the end (to avoID server error 500)
}

// Add a custom dynamic packaging fee
add_action('woocommerce_cart_calculate_fees','add_packaging_fee',20,1);
function add_packaging_fee($cart)
{
    if (is_admin() && !defined('DOING_AJAX'))
        return;

    $domain      = "woocommerce";

    if(WC()->session->get('chosen_packing')){
        $label = __('Embrulho',$domain);
        $cost = 5;
    }
    if (isset($cost))
        $cart->add_fee($label,$cost);
}

未选中时如何取消费用?

这是一个礼品包装选项,如果选择,将在结帐时将额外费用添加到总数中。如果未选中,则应删除费用并更新结帐。

@H_197_0@解决方法

您只需对代码进行一些小的更改,例如:

example.com

代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。

大佬总结

以上是大佬教程为你收集整理的根据 WooCommerce 结帐中的复选框添加或删除固定费用全部内容,希望文章能够帮你解决根据 WooCommerce 结帐中的复选框添加或删除固定费用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:根据