チェックされたラジオボタンに基づいてWooCommerceチェックアウトフィールドを表示または非表示にします

Aug 23 2020

親愛なる、

私はスニペットプラグインを使用してコードをecommeraceプロジェクトに追加しています、配信オプションに集配プラグインがあります、私がやろうとしていることは、集荷オプションを選択すると、顧客の住所情報フィールドが非表示になりますレストランからの集荷を選択した場合、表示を維持することは論理的ではなく、必須です。

スニペットはエラー構文エラーを返します、予期しない '('、変数(T_VARIABLE)または '{'または '$'を期待します。これは、<?php>を置き換えるために関連していましたが、それも機能していません。私のプロジェクトのチェックアウトページをサポートしてくれることを楽しみにしています。 https://www.order.ramadaencorekuwait.com/checkout-2/

 $(document).ready(function() {
  $('input').change(function() { if ($('input[value="pickup"]').is(':checked') && $('input[value="delivery"]').is(':unchecked')) { $('input[value="billing_address_4"]').hide();
    }
    else {
      $('input[value="billing_address_4"]').show();
    }
  });
});

ありがとうございました。

回答

2 LoicTheAztec Aug 23 2020 at 04:27

コードにいくつかの間違いがあります。ラジオボタンの選択に基づいてカスタムチェックアウトフィールドを表示/非表示にするには、以下を使用します。

add_action('wp_footer', 'custom_checkout_js_script');
function custom_checkout_js_script() {
    if( is_checkout() && ! is_wc_endpoint_url() ) :
    ?>
    <script language="javascript">
    jQuery( function($){ var a = 'input[name="pi_delivery_type"]:checked', b = 'input[name="billing_address_4"]'; // Custom function that show hide specific field, based on radio input value function showHideField( value, field ){ if ( value === 'pickup' ) { $(field).parent().parent().hide();
            } else {
                $(field).parent().parent().show(); } } // On start after DOM is loaded showHideField( $(a).val(), b );

        // On radio button change live event
        $('form.woocommerce-checkout').on('change', a, function() { showHideField( $(this).val(), b );
        });
    });
    </script>
    <?php
    endif;
}

コードは、アクティブな子テーマ(またはアクティブなテーマ)のfunctions.phpファイルに入ります。テストされ、動作します。