在Woocommerce结帐页面中重置先前选择的送货方式

时间:2019-03-21 00:41:06

标签: php wordpress woocommerce checkout shipping-method

当前,我正在使用此过滤器清除默认的运送选择方法:

add_filter( 'woocommerce_shipping_chosen_method', '__return_false', 99);

但是,这只会在客户的初始会话期间将其清除。一旦客户选择了一个选项,便会记住将来的选择。

我正在尝试获取结帐单,以迫使客户即使在同一会话中每次访问结帐单,也要选择运输选项。每次加载结帐页面时是否可以运行此过滤器?

1 个答案:

答案 0 :(得分:0)

您可以使用结帐页面(针对已登录的客户)重置上次选择的送货方式:

 delete_user_meta( get_current_user_id(), 'shipping_method' );

还要从会话数据中删除所选的送货方式:

WC()->session->__unset( 'chosen_shipping_methods' );

在类似的钩子函数中:

add_action( 'template_redirect', 'reset_previous_chosen_shipping_method' );
function reset_previous_chosen_shipping_method() {
    if( is_checkout() && ! is_wc_endpoint_url() && is_user_logged_in() 
    && get_user_meta( get_current_user_id(), 'shipping_method', true ) ) {
        delete_user_meta( get_current_user_id(), 'shipping_method' );
        WC()->session->__unset( 'chosen_shipping_methods' );
    }
}

或者您也可以在结帐页面上为所有人设置默认的送货方式:

add_action( 'template_redirect', 'reset_previous_chosen_shipping_method' );
function reset_previous_chosen_shipping_method() {
    if( is_checkout() && ! is_wc_endpoint_url() && is_user_logged_in() ) {
        WC()->session->set( 'chosen_shipping_methods', array('flat_rate:14') );
    }
}

要了解要使用的送货方式费率编号,您可以使用浏览器检查器检查购物车或结帐页面中的送货方式单选按钮,例如:

enter image description here

代码在您的活动子主题(或活动主题)的function.php文件上。应该可以。