为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

湖上湖 2021-05-05 18:19:00
我想仅在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替换产品名称的正确代码?我该如何解决这个问题?
查看完整描述

1 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您要使用的过滤器是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;

}


查看完整回答
反对 回复 2021-05-28
  • 1 回答
  • 0 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信