【问题标题】:Set "free shipping" method as selected default shipping option in WooCommerce在 WooCommerce 中将“免费送货”方法设置为选定的默认送货选项
【发布时间】:2021-12-10 01:39:25
【问题描述】:

我正在努力更改默认选择的运输选项。仅当客户的购物车中的金额超过 70 美元时,才会显示“免费送货”送货选项。如果购物车上的金额低于 70 美元,则送货选项将不会显示在送货选项中。

如果客户有超过 70 美元或更多,“免费送货”选项将显示,它应该是默认选择的送货选项。

我尝试添加以下 sn-p,但它似乎对我不起作用,或者修改 ID 时可能有错误(不确定)。

add_action( 'woocommerce_before_cart', 'set_default_chosen_shipping_method', 5 );
function set_default_chosen_shipping_method(){
    //
    if( count( WC()->session->get('shipping_method_0')['rates'] ) > 0 ){
        foreach( WC()->session->get('shipping_method_0')['rates'] as $rate_id =>$rate)
            if($rate->method_id == 'free_shipping30'){
                $default_rate_id = array( $rate_id );
                break;
            }

        WC()->session->set('chosen_shipping_methods', $default_rate_id );
    }
}

我得到了这个sn-p的想法here

提前谢谢你!!

【问题讨论】:

  • WooCommerce 提供免费送货选项,购物车价值最低。不需要代码。它是内置的。/wp-admin/admin.php?page=wc-settings&tab=shipping > 编辑区域 > 启用免费送货 > 将最低订单金额设置为 70
  • 明白了,我已经设置了免运费,设置了最低订购金额。我面临的唯一问题是,如果客户达到或超过获得免费送货的最低金额,则应在送货选项中自动选择免费送货选项。现在,即使送货选项上有免费送货选项,它也会自动选择“一流邮件”送货选项。我希望我能解释清楚:D

标签: php wordpress woocommerce hook-woocommerce shipping-method


【解决方案1】:

您的代码包含一些错误

  • WC()->session->get('shipping_method_0')['rates'] 替换为WC()->session->get( 'shipping_for_package_0')['rates']
  • if($rate->method_id == 'free_shipping30'){ 替换为if ( $rate->method_id == 'free_shipping' ) {

所以你得到:

function action_woocommerce_before_cart() { 
    // NOT empty (get)
    if ( count( WC()->session->get( 'shipping_for_package_0')['rates'] ) > 0 ) {
        // Loop through
        foreach ( WC()->session->get('shipping_for_package_0')['rates'] as $rate_id => $rate ) {            
            // For free shipping
            if ( $rate->method_id == 'free_shipping' ) {
                $default_rate_id = array( $rate_id );
                break;
            }
        }

        // Set
        WC()->session->set( 'chosen_shipping_methods', $default_rate_id );
    }
}
add_action( 'woocommerce_before_cart', 'action_woocommerce_before_cart', 10, 0 );

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 2021-05-01
    • 2018-07-17
    • 2020-06-22
    • 1970-01-01
    • 2016-11-11
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多