【问题标题】:Change Shipping method TITLE after order in woocommerce在woocommerce中订购后更改运输方式TITLE
【发布时间】:2022-01-20 13:30:05
【问题描述】:

我想在创建订单后更改运输方式标题(查看图片)。我使用钩子“woocommerce_thankyou”,但我无法更改现有运输的标题。

image with i want change

我找到了这个代码,但是用这个代码添加了一个新的运输方式,但这不是我想要的,因为在这个代码之后我有 2 个运输方式。

$item = new WC_Order_Item_Shipping();
$item->set_method_title( "SEUR Estándar" );
$item->set_method_id( "seur" ); // set an existing Shipping method rate ID
//$item->set_total( $new_ship_price ); // (optional)
//$item->calculate_taxes($calculate_tax_for);

$order->add_item( $item );

$order->save();

感谢您的帮助。

【问题讨论】:

    标签: wordpress woocommerce shipping-method


    【解决方案1】:

    如果我理解正确,您只想在管理区更改运输方式 TITLE 吗?

    例如: => 在 WC 设置中,运输方式标题 = SEUR Estándar(此标题在结账时和电子邮件中显示给客户) => 在 WC admin 中,当您处理订单时,您希望将 SEUR Estándar 更改为 SEUR

    为此,您可以尝试类似的方法(未测试),仅挂钩显示的标题

    add_filter( 'woocommerce_shipping_method_title', function( $method_title, $method_id ) {
        if ( ! is_admin() || ! 'shop_order' === get_post_type() ) { // change applied only on admin order page
            return $method_title;
        }
        if ( $method_id == 'seur' ) { // change condition to match what you need
            $method_title = 'SEUR'; // new method title
        }
        return $method_title;
    }, 10, 2 );
    

    如果您想更改其他区域的运输方式标题,请考虑哪些更容易并且需要更少的工作:仅针对前端客户更改,仅针对管理员更改,更改电子邮件...?然后在上面的sn-p中适配条件。

    【讨论】:

    • 您好,非常感谢您的回答,我会尽量在我的问题更具体。 SEUR 对 1 个单一的 method_id 有 2 个 method_title,原因是插件不再与 woocommerce 通信。对于 SEUR 热线,解决方案是在客户在“woocommerce -> 我的订单”中完成订单后手动更改。我尝试自动进行更改,以便管理员不必这样做。 ->在下一条评论中继续
    • 这个想法是,默认情况下,当订单完成时,method_title 是 SEUR,在特定条件下“如果购物车不包含新鲜产品”,当到达订单结束时,我理解的是挂钩“woocommerce_thanyou”,我想设置条件,如果购物车不包含新鲜产品,那么只需更改 method_title,我之前放置的代码就有问题,添加一个新条目,我想要的是修改已经存在的那个。谢谢
    • 如果您在任何挂钩下以编程方式更改 WC_Shipping_Method 的 method_title(例如“woocommerce_thanyou”),此更改将在全球范围内应用。因此,其他所有客户在选择运输方式时都会看到这种变化。 =>
    • 这就是为什么我建议你用 'woocommerce_shipping_method_title' 钩子更改 displayed method_title 并添加你自己的逻辑。你应该添加一个在“woocommerce_thanyou”下计算的订单元数据到知道要显示什么标题。
    • 另一个建议是在 woocommerce 设置中创建具有更改标题的第二种运输方式。如果条件符合“woocommerce_thanyou”挂钩,则将此方法隐藏给客户选择并更改订单的 Shipping_method。
    【解决方案2】:

    我找到了这个解决方案,并感谢所有 Jo Kolov

    foreach($rates as $rate_id => $rate) { 
        if ( 'seur' === $rate->method_id ) {
            $rates[$rate_id]->label = __( 'SEUR Estándar', 'woocommerce' );
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 2020-08-31
      • 2020-11-28
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多