简体   繁体   English

在 Woocommerce 管理订单页面(运输部分)中用 SKU 替换产品名称

[英]Replace product name by SKU in Woocommerce admin orders pages (shipping section)

I would like to replace the Product name by the SKU only in Woocommerce --> Orders --> Order Details in the backend admin of WordPress located in the Shipping section.我想仅在 Woocommerce --> 订单 --> 位于运输部分的 WordPress 后端管理中的订单详细信息中用 SKU 替换产品名称。

运输部分中的 sku 而不是产品名称

I tried the following code but it didn't work.我尝试了以下代码,但没有用。 I am not skilled with PHP.我对 PHP 不熟练。

add_filter( 'woocommerce_order_item_shipping_get_name', 'filter_order_item_shipping_get_name', 10, 2 );
function filter_order_item_shipping_get_name( $item_name, $order_item ) {
    if ( is_admin() && $order_item->is_type('line_item') ) {
        $product = $order_item->get_product();

        if( $sku = $product->get_sku() ) {
            $item_name = $sku;
        }
    }
    return $item_name;
}

Is it possible to know the correct code to replace the Product name by the SKU only in Woocommerce --> Orders --> Order Details Shipping section in the backend admin of WordPress?是否可以仅在 WordPress 后端管理中的 Woocommerce --> 订单 --> 订单详细信息运输部分中知道用 SKU 替换产品名称的正确代码?

How do I solve this problem?我该如何解决这个问题?

The filter you want to use is woocommerce_order_item_display_meta_value .您要使用的过滤器是woocommerce_order_item_display_meta_value It takes 3 parameters, and the third one is a shipping object in the place you are hoping to hook in. You test that its tye is 'shipping' to make sure you don't modify other areas.它需要 3 个参数,第三个是您希望挂钩的地方的运输对象。您测试它的 tye 是否为'shipping'以确保您不修改其他区域。 Next you have to get the parent order object, get the order items objects from that, and loop through them to build the output string.接下来,您必须获取父订单对象,从中获取订单项目对象,并遍历它们以构建输出字符串。

add_filter( 'woocommerce_order_item_display_meta_value', 'filter_order_item_display_meta_value', 10, 3 );
function filter_order_item_display_meta_value( $meta_value, $meta_object, $order_item ) {

    if ( is_admin() && $order_item->is_type('shipping') ) {

        $meta_values = [];
        $order = $order_item->get_order();
        $order_items = $order->get_items();

        foreach( $order_items as $order_item ){

            $quantity   = $order_item->get_quantity();
            $product    = $order_item->get_product();
            $sku        = $product->get_sku();
            $name       = $product->get_name();

            if( $sku ) {
                $meta_values[] = $sku . ' × ' . $quantity;
            } else {
                $meta_values[] = $name . ' × ' . $quantity;
            }
        }

        return implode( ', ', $meta_values );

    }

    return $meta_value;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM