猿问

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

我想仅在Woocommerce->订单->订单详细信息(位于发运部分中的WordPress的后台管理中)中用SKU替换产品名称。

我尝试了以下代码,但是没有用。我不懂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;

}

是否可能仅在WordPress后台管理中的Woocommerce->订单->订单详细信息运送部分中才知道用SKU替换产品名称的正确代码?


我该如何解决这个问题?


湖上湖
浏览 274回答 1
1回答

海绵宝宝撒

您要使用的过滤器是woocommerce_order_item_display_meta_value。它有3个参数,第三个是您希望挂接的地方的运输对象。您测试其类型是'shipping'确保不修改其他区域。接下来,您必须获取父订单对象,从中获取订单商品对象,然后遍历它们以构建输出字符串。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;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答