【问题标题】:Set shipping method programmatically Woocommerce以编程方式设置运输方式 Woocommerce
【发布时间】:2015-09-11 01:27:11
【问题描述】:

我刚刚创建了一个自定义 Woocommerce 送货方式,其 ID 为 custom_shipping。该选项现在出现在 Woocommerce -> 设置 -> 运输管理页面上。

我想根据用户的凭据动态设置送货方式。现在默认方法是flat_rate

问题: 对于满足要求的用户,如何在整个会话期间将送货方式设置为 custom_shipping

试过了:

$chosen_methods = $woocommerce->session->set('chosen_shipping_methods', array('purolator_shipping');

这会在我的 cart 页面上正确设置会话变量 'chosen_shipping_methods',但在移动到 checkout 时,会话会返回使用 flat_rate 送货方式。

必须有一个钩子或过滤器可以插入,以便在创建购物车会话或其他内容时更改运输方式。 (当用户第一次向购物车添加东西时)。

理想情况下,我希望在加载其他任何东西之前设置新的运输方式,以便运输方式在他们的购物车和结帐摘要上看起来正确。

感谢指导。

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    使用woocommerce_before_checkout_shipping_form 钩子

    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' ) );
    
    }
    

    请注意,在购物车页面上,如果用户将送货方式从默认更改为其他方式,上面的代码将再次将其恢复为结帐页面上的默认方式,这会有点混乱为用户。

    【讨论】:

      【解决方案2】:
      // WC()->session->set('chosen_shipping_methods', array( 'your_shipping_rate_id_here' ) );
      

      示例:

      WC()->session->set('chosen_shipping_methods', array( 'flat_rate:1' ) );
      

      【讨论】:

      • 为我工作 WC()->session->set('chosen_shipping_methods', array($id_shipping) );
      • 我不知道为什么,但出于某种原因,这对我不起作用 ?,默认运输方式是 wp_local_pickup,我使用购物车 API。
      猜你喜欢
      • 2021-07-10
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 2018-07-25
      相关资源
      最近更新 更多