チェックされたラジオボタンに基づいて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ファイルに入ります。テストされ、動作します。