我刚刚创建了一个id为custom\u shipping
的自定义配送方法。该选项现在显示在屏幕上-
我想根据用户的凭据动态设置传送方法。现在默认的方法是flat_rate
。
问题:对于满足要求的用户,如何将整个会话的发货方式设置为custom_shipping
?
尝试:
$chosen_methods = $woocommerce->session->set('chosen_shipping_methods', array('purolator_shipping');
这将在我的购物车
页面上正确设置会话变量“Selected\u shipping\u methods”,但在移动到结帐
时,会话将返回到使用统一费率
装运方法。
必须有一个钩子或过滤器,我可以插入它来更改购物车会话创建时的运输方法。(当用户第一次向购物车添加东西时)。
理想情况下,我希望在加载任何其他内容之前设置新的装运方法,以便装运方法在他们的购物车和结帐摘要上看起来正确。
感谢您的指导。
在结帐前使用woocommerce\u发货表单
hook
add_action( 'woocommerce_before_checkout_shipping_form', 'before_shipping');
function before_shipping( $checkout ) {
// check the user credentials here and if the condition is met set the shipping method
WC()->session->set('chosen_shipping_methods', array( 'purolator_shipping' ) );
}
需要注意的是,在购物车页面上,如果用户将发货方法从默认更改为其他方法,上面的代码将再次将其还原为签出页面上的默认方法,这会让用户感到有点困惑。
// WC()->session->set('chosen_shipping_methods', array( 'your_shipping_rate_id_here' ) );
例子:
WC()->session->set('chosen_shipping_methods', array( 'flat_rate:1' ) );