- This topic is empty.
Viewing 2 posts - 1 through 2 (of 2 total)
- AuthorPosts
-
February 15, 2021 at 3:12 am #9465
alexgrey
ParticipantThat action helps to make fields non-required
add_filter( 'woocommerce_checkout_fields', 'unrequire_checkout_fields' ); function unrequire_checkout_fields( $fields ) { $fields['billing']['billing_company']['required'] = false; $fields['billing']['billing_city']['required'] = false; $fields['billing']['billing_postcode']['required'] = false; $fields['billing']['billing_country']['required'] = false; $fields['billing']['billing_state']['required'] = false; $fields['billing']['billing_address_1']['required'] = false; $fields['billing']['billing_address_2']['required'] = false; return $fields; }
But it works only with css
#billing_country_field, #billing_address_1_field, #billing_address_2_field,#billing_state_field,#billing_last_name_field,#billing_postcode_field,#billing_company_field { display: none !important; }
I thinks that’s not the best decision. It has to be like that
add_filter('woocommerce_checkout_fields','remove_checkout_fields'); function remove_checkout_fields($fields){ unset($fields['billing']['billing_first_name']); unset($fields['billing']['billing_last_name']); unset($fields['billing']['billing_address_1']); unset($fields['billing']['billing_address_2']); unset($fields['billing']['billing_city']); unset($fields['billing']['billing_postcode']); unset($fields['billing']['billing_country']); unset($fields['billing']['billing_state']); return $fields; }
But when I’m adding exactly that code, it requires address and says that the pay method(native local pickup) is wrong. Without that code and with css all works fine. Maybe someone had the same problem and already solved it? Without plugins if possible.
February 15, 2021 at 8:52 am #9466loictheaztec
ParticipantThis requires to be done in a different way, as in real word WooCommerce ask for checkout billing country throwing an error like "Please enter an address to continue.":
To avoid this problem use the following instead (where you will define all key fields to be removed):
// Just hide woocommerce billing country add_action('woocommerce_before_checkout_form', 'hide_checkout_billing_country', 5); function hide_checkout_billing_country() { echo '<style>#billing_country_field{display:none;}</style>'; } add_filter('woocommerce_billing_fields', 'customize_billing_fields', 100); function customize_billing_fields($fields ) { if (is_checkout()) { // HERE set the required key fields below $chosen_fields = array('first_name', 'last_name', 'address_1', 'address_2', 'city', 'postcode', 'country', 'state'); foreach ($chosen_fields as $key) { if (isset($fields['billing_'.$key]) && $key !== 'country') { unset($fields['billing_'.$key]); // Remove all define fields except country } } } return $fields; }
Code goes in functions.php file of the active child theme (or active theme). Tested and works.
- AuthorPosts
Viewing 2 posts - 1 through 2 (of 2 total)
- You must be logged in to reply to this topic.