亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

隱藏 WooCommerce 中特定運輸方式的結帳運輸字段部分

隱藏 WooCommerce 中特定運輸方式的結帳運輸字段部分

PHP
喵喔喔 2023-05-26 15:50:38
有人問了下面的問題,我已經回答了。然后他刪除它。所以我發布了這個問題和我的回答,因為這對社區很有用:在 WooCommerce 中,我試圖在不重新加載結帳頁面的情況下動態更新復選框表單。我有 2 種送貨方式:“送貨”和“到付”。我試圖僅禁用送貨地址部分(使用“如果選擇的方法是收集,則送往另一個地址”復選框選項)和所有送貨字段。首先我試過這個:add_action( 'woocommerce_after_shipping_rate', 'carrier_custom_fields', 30, 2 );function carrier_custom_fields( $method, $index ) {    if( ! is_checkout()) return; // Only on checkout page    $customer_carrier_method = 'local_pickup:1';    if( $method->id != $customer_carrier_method ) return; // Only display for "local_pickup"    $chosen_method_id = WC()->session->chosen_shipping_methods[ $index ];    // echo $chosen_method_id;    // If the chosen shipping method is 'legacy_local_pickup' we display    if($chosen_method_id == $customer_carrier_method ):        add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');    else :        add_filter( 'woocommerce_cart_needs_shipping_address', '__return_true');    endif;}然后我試了這個:add_action( 'woocommerce_shipping_method_chosen', 'check_if_local_pickup', 10, 1 );function check_if_local_pickup( $chosen_method ) {    $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );    $chosen_shipping = $chosen_methods[0];     if ($chosen_shipping == 'local_pickup:1') {         add_filter( 'woocommerce_ship_to_different_address_checked', '__return_false' );        add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');        return true;    }    else    {        add_filter( 'woocommerce_cart_needs_shipping_address', '__return_true');        return true;    }} 他們兩個都不起作用。如何在 WooCommerce 中隱藏特定選擇的運輸方式的結帳運輸字段部分?
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

PHP 不是這種方式,因為這是“客戶端” (而不是“服務器端”)的事件,因此它需要使用 jQuery。因此,要隱藏特定運輸方式的運輸字段部分,您將使用以下內容:


// Auto Show hide checkout shipping fields section based on chosen shipping methods

add_action( 'wp_footer', 'custom_checkout_field_script' );

function custom_checkout_field_script() {

    // Only on checkout page

    if( is_checkout() && ! is_wc_endpoint_url() ):


    // HERE below define your local pickup shipping method

    $local_pickup = 'local_pickup:1';


    // Jquery code start

    ?>

    <script>

        jQuery(function($){

            var a = 'checked',      

                b = 'input#ship-to-different-address-checkbox', 

                c = 'input[name^="shipping_method"]',   

                d = '<?php echo $local_pickup; ?>',     

                e = c + ':' + a

                f = 'div.woocommerce-shipping-fields,' + b;


            // 1. On load: when the chosen shipping method is our defined shipping method

            if( $(e).val() === d ) {

                // Hide shipping fields section

                $(f).hide(); 

            }


            // 2. On shipping method "change" (Live event)

            $( 'form.checkout' ).on( 'change', c, function() {

                // When the chosen shipping method is our defined shipping method

                if( $(e).val() === d ) {

                    // if the checkbox is checked, uncheck it first

                    if ( $(b).prop(a) ) {

                        $(b).click();

                    }


                    // Hide shipping fields section

                    $(f).hide();

                } else if ( $(e).val() !== d ) {

                    // show closed shipping fields section with (unchecked checkbox)

                    $(f).show();                    

                }

            });

        });

    </script>

    <?php

    endif;

}

代碼進入您的活動子主題(或活動主題)的 functions.php 文件。測試和工作。


查看完整回答
反對 回復 2023-05-26
  • 1 回答
  • 0 關注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號