WooCommerce Checkout에서 사용자 선택에 따라 수수료를 동적으로 업데이트하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-20 18:04:31
원래의
598명이 탐색했습니다.

How to Dynamically Update Fees Based on User Selections in WooCommerce Checkout?

WooCommerce Checkout의 라디오 버튼 선택에 따른 동적 수수료 업데이트

WooCommerce 플러그인을 개발할 때 플러그인에 동적 수수료를 추가해야 하는 경우가 많습니다. 결제 과정. 일반적인 예 중 하나는 비닐봉지나 선물 상자와 같이 비용이 다양한 다양한 포장 옵션을 제공하는 것입니다. 이 문서에서는 이를 달성하는 최선의 방법을 탐색하고 보안 고려 사항을 다룹니다.

WC_Cart를 사용한 동적 수수료 추가

<code class="php">function at87_add_custom_fees( WC_Cart $cart ){
    $fees = 3; // fee amount
    $fees = isset($_GET['test']) ? $_GET['test'] : 3;

    $cart->add_fee( 'Emballagegebyr', intval($fees));
}</code>
로그인 후 복사

이 코드는 동적으로 카트에 수수료를 추가합니다. JavaScript 또는 Ajax 요청을 사용하여 수정할 수 있는 $_GET['test']에서 얻은 값. 그러나 $_GET을 사용하는 것은 안전하지 않으므로 주의해서 사용해야 한다는 점에 유의하는 것이 중요합니다.

AJAX 기반 솔루션

보다 안전하고 동적인 접근 방식은 다음과 같습니다. AJAX를 사용하여 수수료를 업데이트하세요. 다음 코드는 완전한 솔루션을 제공합니다.

<code class="php">// Ajax script
add_action( 'wp_footer', 'checkout_shipping_packing_script' );
function checkout_shipping_packing_script() {
    if ( ! is_checkout() )
        return;

    ?>
    <script type="text/javascript">
    jQuery( function($){
        $('form.checkout').on('change', 'input[name=radio_packing]', function(e){
            e.preventDefault();
            var p = $(this).val();
            $.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
}

// Ajax request handler
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)
}</code>
로그인 후 복사

이 코드는 Ajax를 활용하여 선택한 패키징 옵션을 서버로 보낸 다음 WooCommerce 세션에 저장합니다. 결제는 페이지를 새로 고칠 필요 없이 동적으로 업데이트됩니다.

결론

Ajax 기반 접근 방식은 사용자에 따라 동적으로 수수료를 업데이트하는 안전하고 효율적인 방법을 제공합니다. WooCommerce 결제 프로세스에서 선택합니다. $_GET가 필요하지 않으며 원활하고 안전한 결제 환경을 보장합니다.

위 내용은 WooCommerce Checkout에서 사용자 선택에 따라 수수료를 동적으로 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!