更改Woocommerce中的默认送货方式

时间:2018-11-26 11:46:12

标签: php wordpress woocommerce cart shipping-method

我有两种送货方式。首先是免费送货,其次是特快专递的固定费用送货,为此我要收取额外费用。默认情况下,购物车中选择了“快递”,这导致一些买家感到困惑,我不提供免费送货。

是否可以将默认的选定方法更改为免费送货?

2 个答案:

答案 0 :(得分:0)

我认为您只需重新订购每个送货区域的送货方式,将“免费送货”移到第一行。

如果它不起作用,则可以添加以下代码:

add_action( 'woocommerce_before_cart', 'auto_select_free_shipping_by_default' );
function auto_select_free_shipping_by_default() {
    if ( ! WC()->session->has_session() )
        WC()->session->set_customer_session_cookie( true );

    // Check if "free shipping" is already set
    if ( strpos( WC()->session->get('chosen_shipping_methods')[0], 'free_shipping' ) !== false )
        return;

    // Loop through shipping methods
    foreach( WC()->session->get('shipping_for_package_0')['rates'] as $key => $rate ){
        if( $rate->method_id === 'free_shipping' ){
            // Set "Free shipping" method
            WC()->session->set( 'chosen_shipping_methods', array($rate->id) );
            return;
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试并可以正常工作。

  

如果您不使用购物车页面,并且重定向到结帐,则必须用代码中的woocommerce_before_cart钩子替换woocommerce_before_checkout_form

答案 1 :(得分:-1)

功能test_default_shipping_method($ default,$ available){  $ default_method ='wcv_pro_vendor_shipping'; //在此处提供将选择默认值的服务名称         如果(array_key_exists($ method,$ available_methods))             返回$ default_method;         其他             返回$ default_method; }