【问题标题】:Change the default Shipping method in Woocommerce更改 Woocommerce 中的默认运输方式
【发布时间】:2018-11-26 11:46:12
【问题描述】:

我有两种送货方式。首先是免费送货,其次是特快专递的统一运费,我收取额外费用。默认情况下,在购物车中选择快递运输,这导致一些买家混淆我不提供免费送货服务。

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

【问题讨论】:

    标签: php wordpress woocommerce cart shipping-method


    【解决方案1】:

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

    如果不行,可以添加如下代码:

    add_action( 'woocommerce_before_cart', 'auto_select_free_shipping_by_default' );
    function auto_select_free_shipping_by_default() {
        if ( isset(WC()->session) && ! 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 挂钩。

    【讨论】:

    • 惊人的代码,再次感谢 Loic,您的代码在完全不同的环境中帮助了我,这不是第一次了。
    【解决方案2】:

    function test_default_shipping_method($default,$available){ $default_method = 'wcv_pro_vendor_shipping'; //在此处提供将选择默认的服务名称 if(array_key_exists($method, $available_methods)) 返回 $default_method; 别的 返回 $default_method; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2019-06-22
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      相关资源
      最近更新 更多