With the Local Pickup feature available with Fluid Checkout PRO, the shipping address section is removed from the checkout form if a local pickup shipping method is selected.
When local pickup is the only shipping method available for the matched shipping zone, the customer won’t be able to enter their shipping address at checkout to then see more shipping methods that would be otherwise available to them.
Depending on the shipping settings on your website, the Local Pickup feature might block the customer from providing a shipping address, which in turn would enable more shipping methods options.
Since Fluid Checkout PRO version 2.1.8, this limitation has been resolved by adding a new option to clear the selected shipping method, read more about this new option added for the Local Pickup feature on our website at Local Pickup — Hide shipping address when local pickup is selected, and more specifically on the section Let customers clear the shipping method selected.
Jump to other available solutions.
Explanation #
With the default WooCommerce checkout, the shipping address is initially set to “same as billing address” by default, where the customer has the option to enter a different address for shipping.
If the customer knows they want to pick up at the store, they will just ignore the option to set a different shipping address. Internally, WooCommerce will use the billing address for anything that needs the shipping address, and in your case, the USPS plugin will be able to use the billing address to calculate the available shipping method options.
With Fluid Checkout, the shipping address is provided before the billing address, and the Local Pickup feature will remove the shipping address section from the checkout form, which in turn removes the ability to provide the shipping address if local pickup is the only shipping method option available.
When the customer use the shipping calculator on the cart page, it will set the shipping address that is used at checkout. Unfortunately, adding an option to set the shipping address similarly to how it works on the cart page is not a feasible solution for the checkout.
The ideal solution would be to add the ability for customers to select whether they want to pickup at the store or get the package shipped before deciding to remove the shipping address section from the checkout form.
We have plans to fix this limitation and make other substantial improvements to the Local Pickup feature in future releases.
Available solutions #
- Solution 1: Enable the option to clear the selected shipping method (recommended solution)
- Solution 2: Move shipping post code/zip code field to the contact step
- Solution 3: Change shipping method settings
Solution 1: Enable the option to clear the selected shipping method (recommended solution) #
Since Fluid Checkout PRO version 2.1.8, the recommended solution for this issue is to enable the new option to clear the selected shipping method, read more about this new option added for the Local Pickup feature on our website at Local Pickup — Hide shipping address when local pickup is selected, and more specifically on the section Let customers clear the shipping method selected.
Solution 2: Move shipping post code/zip code field to the contact step #
This solution is particularly effective if your shipping methods are only available after the shipping address is provided. Often providing the shipping post code/zip code is enough to unlock these other shipping methods.
Moving the shipping post code/zip code to the contact step will force customers to provide the necessary information, while avoiding the hassle of providing the entire shipping address while it will not be needed — the latter which is the entire point the Local Pickup feature.
- Move the shipping “Post code/ZIP code” field to the contact step using the code snippet below.
- Enable the “Multi-step layout” for the checkout form, which will force customers to enter the ZIP code at the contact step before proceeding to shipping.
This is the code snippet you will need:
/**
* Move fields to the contact substep.
*/
function fluidcheckout_move_fields_to_contact_substep( $contact_field_ids ) {
// Fields after existing fields
$contact_field_ids = array_merge( $contact_field_ids, array( 'shipping_postcode' ) );
return $contact_field_ids;
}
add_filter( 'fc_checkout_contact_step_field_ids', 'fluidcheckout_move_fields_to_contact_substep', 10 );
/**
* Add field values to the address data for formatted address text.
*/
function fluidcheckuout_add_address_data_for_formatted_address( $address_data ) {
// Define fields for which to add data
$field_key_prefix = 'shipping_';
$field_keys = array( 'shipping_postcode' );
// Get data from checkout fields
foreach ( $field_keys as $field_key ) {
// Get field key
$address_field_key = str_replace( $field_key_prefix, '', $field_key );
$address_data[ $address_field_key ] = WC()->checkout->get_value( $field_key );
}
return $address_data;
}
add_filter( 'fc_shipping_substep_text_address_data', 'fluidcheckuout_add_address_data_for_formatted_address', 10 );
If you are unsure about how to add the code snippet to your website, check our article:
How to safely add code snippets to your WooCommerce website
Solution 3: Change shipping method settings #
See above our recommended solution for this limitation is to move shipping post code/zip code field to the contact step.
If that does not work for your case, it might be possible to change the shipping method settings to avoid this problem from happening.
This would involve one or more of the following things:
- Remove all shipping methods from shipping zones that are not covered by your carriers, removing also local pickup.
- Move the shipping methods section to be displayed after the shipping address. This is necessary to allow customers to enter the shipping address the first time, and the downside is that the customer will have to type in the address before they can even see that local pickup is an option.
- Move all local pickup shipping methods down in the available shipping methods list so that it is not the first option for any of the shipping zones.
- Change the WooCommerce shipping settings to hide shipping costs until an address is provided. This option is available at WP Admin > WooCommerce > Settings > Shipping > Shipping options.