结帐后更改 WooCommerce 订单上的特定运输方式标题 [英] Change specific shipping method title on WooCommerce orders after checkout

查看:52
本文介绍了结帐后更改 WooCommerce 订单上的特定运输方式标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的送货信息中有一些自定义字段未正确"显示;在woocommerce下订单的发货信息中->订单 ->命令#.购物车和结帐页面通过更改标签的 php 代码而不同.购物车 image1 是在运输方式 image2 中定义的原始\核心标签,这将被发送到订单信息页面.我希望显示结帐信息,而不是显示在 image3 中.Image4 是它当前在订单信息下的外观.我用来更改结帐和电子邮件中的送货信息的代码如下.

//调整订单和电子邮件shipping via";显示自定义运营商名称和号码add_filter( 'woocommerce_order_shipping_to_display_shipped_via', 'wdo_filter_order_shipping_to_display_shipped_via', 10, 2 );函数 wdo_filter_order_shipping_to_display_shipped_via( $shipped_via, $order ) {$carrier_name = $order->get_meta('carrier_name');//获取运营商名称//使用定义的运营商名称"定位订单;为自定义承运人"邮寄方式如果 ( $carrier_name ) {$carrier_number = $order->get_meta('carrier_number');//获取运营商编号$shipped_via = '<small class="shipped_via">'.sprintf( __( 'via Custom Carrier: %s (%s)', 'woocommerce'), $carrier_name, $carrier_number ) .'</小>';}返回 $shipped_via;}

购物车页面原始标签:

在 WooCommerce/设置/运输下定义:

结帐运输信息以及我想在订单下显示的内容:

WooCommerce 管理下的送货信息 >订单 >编辑订单:

解决方案

不要使用上一个问题答案中的代码,而是使用以下代码为自定义承运人"设置正确的运输方式名称和标题;当客户下订单时,带有承运人名称和编号的运输方式:

//带有承运人名称和编号的 Custom Carier 的自定义运输标签add_action('woocommerce_checkout_create_order_shipping_item', 'action_wc_checkout_create_order_shipping_item', 10, 4);function action_wc_checkout_create_order_shipping_item( $item, $package_key, $package, $order ) {if ( isset($_POST['carrier_name']) && !empty($_POST['carrier_name']) ) {//获取运营商编号$carrier_number = isset($_POST['carrier_number']) &&!空($_POST['carrier_number'])?'(' .sanitize_text_field($_POST['carrier_number']) .')' : '';$item->set_method_title(sprintf('%s: %s %s', __("Custom Carrier", "woocommerce"), sanitize_text_field($_POST['carrier_name']), $carrier_number));}}

代码位于活动子主题(或活动主题)的functions.php 文件中.它应该有效.

因此,自定义承运人运输方式将显示在管理员订单、客户订单(收到的订单和订单查看)和电子邮件通知的任何位置.

注意:请确保 'carrier_name''carrier_number' 是您结帐页面上字段的正确输入名称.>

I have some custom fields in my shipping information that is not being displayed "properly" in the shipping information of orders under woocommerce -> orders -> order#. The cart and checkout pages are different via php code that changes a label. The cart image1 is the original\core label that is defined in shipping methods image2, this is being sent to the order information page. I would like the checkout information to show instead which is shown in image3. Image4 is how it currently looks under the order information. The code I use to change the shipping information on checkout and emails is below.

// Adjusting order and emails "shipping via" to show custom carrier name and number
add_filter( 'woocommerce_order_shipping_to_display_shipped_via', 'wdo_filter_order_shipping_to_display_shipped_via', 10, 2 );
function wdo_filter_order_shipping_to_display_shipped_via( $shipped_via, $order ) {
    $carrier_name = $order->get_meta('carrier_name'); // Get carrier name

    // Targeting orders with defined "carrier name" for "Custom Carrier" shipping method
    if ( $carrier_name ) {
        $carrier_number = $order->get_meta('carrier_number'); // get carrier number
        $shipped_via = '&nbsp;<small class="shipped_via">' . sprintf( __( 'via Custom Carrier: %s (%s)', 'woocommerce' ), $carrier_name, $carrier_number ) . '</small>';
    }
    return $shipped_via;
}

Cart page original label:

Defined under WooCommerce / Settings / Shipping:

Checkout shipping information and what I want to show under the order:

Shipping info under WooCommerce Admin > Orders > Edit Order:

解决方案

Instead of using the code from your previous question answer, use the following that will set the correct shipping method name and title for "Custom Carrier" shipping method with the carrier name and number, when customer place an order:

// Custom shipping label For Custom Carier with carrier name and number
add_action( 'woocommerce_checkout_create_order_shipping_item', 'action_wc_checkout_create_order_shipping_item', 10, 4 );
function action_wc_checkout_create_order_shipping_item( $item, $package_key, $package, $order ) {
    if ( isset($_POST['carrier_name']) && ! empty($_POST['carrier_name']) ) {
        // Get carrier number
        $carrier_number = isset($_POST['carrier_number']) && ! empty($_POST['carrier_number']) ? '(' . sanitize_text_field($_POST['carrier_number']) . ')' : ''; 
        
        $item->set_method_title( sprintf( '%s: %s %s', __("Custom Carrier", "woocommerce"), sanitize_text_field($_POST['carrier_name']), $carrier_number ) );
    }
}

Code goes in functions.php file of the active child theme (or active theme). It should works.

So the Custom Carrier shipping method will be displayed everywhere on admin orders, customer orders (order received and order view) and email notifications.

Note: Be sure that 'carrier_name' and 'carrier_number' are the correct input names for your fields on checkout page.

这篇关于结帐后更改 WooCommerce 订单上的特定运输方式标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆