我刚刚创建了一个 ID 为 custom_shipping
的自定义 Woocommerce 送货方式。该选项现在出现在 Woocommerce -> 设置 -> 运输管理页面上。
我想根据用户的凭据动态设置送货方式。默认方法是 flat_rate
现在。
问题:
如何为满足要求的用户在整个 session 期间将送货方式设置为 custom_shipping
?
尝试过:
$chosen_methods = $woocommerce->session->set('chosen_shipping_methods', array('purolator_shipping');
这在我的 cart
页面上正确设置了 session 变量“chosen_shipping_methods”,但是在移动到 checkout
后, session 返回到使用 flat_rate
运输方式。
必须有一个钩子(Hook)或过滤器,我可以插入以在创建购物车 session 或其他东西时更改运输方式。 (当用户第一次将东西添加到购物车时)。
理想情况下,我希望在加载其他任何东西之前设置新的送货方式,这样送货方式在他们的购物车和结帐摘要上看起来是正确的。
感谢指导。
最佳答案
使用 woocommerce_before_checkout_shipping_form
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' ) );
}
请注意,如果用户在购物车页面上将送货方式从默认方式更改为其他方式,上面的代码将再次将其恢复为结帐页面上的默认方式,这会有点困惑为用户。
关于php - 以编程方式设置运输方式 Woocommerce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514094/