I just created a custom Woocommerce shipping method with the id of custom_shipping
. The option now appears on the Woocommerce -> Settings -> Shipping admin page.
I would like to set the shipping method dynamically based on a user’s credentials. The default method is flat_rate
right now.
Question:
How can I set the shipping method to custom_shipping
for users who meet a requirement, for the entirety of their session?
Tried:
$chosen_methods = $woocommerce->session->set('chosen_shipping_methods', array('purolator_shipping');
This sets the session variable ‘chosen_shipping_methods’ correctly on my cart
page, but upon moving to checkout
, the session goes back to using the flat_rate
shipping method.
There must be a hook or filter that I can plug into to change the shipping method upon cart-session creation or something. (When a user adds something to cart for first time).
I would ideally like to set the new shipping method before anything else is loaded so the shipping method looks correct on their cart and checkout summaries.
Guidance appreciated.
Use the
woocommerce_before_checkout_shipping_form
hookJust a note to say that, on the cart page if the user changes the shipping method from default to some other method, the code above will again revert it to the default method on the checkout page, which will be a bit confusing for the user.
example: