Php 在Woocommerce管理订单页面(发货部分)中将产品名称替换为SKU
我只想在Woocommerce-->Orders-->Order Details中用SKU替换产品名称,该详细信息位于Shipping部分的WordPress后端管理中 我尝试了以下代码,但没有成功。我不擅长PHPPhp 在Woocommerce管理订单页面(发货部分)中将产品名称替换为SKU,php,woocommerce,admin,orders,Php,Woocommerce,Admin,Orders,我只想在Woocommerce-->Orders-->Order Details中用SKU替换产品名称,该详细信息位于Shipping部分的WordPress后端管理中 我尝试了以下代码,但没有成功。我不擅长PHP add_filter( 'woocommerce_order_item_shipping_get_name', 'filter_order_item_shipping_get_name', 10, 2 ); function filter_order_item_shipping_g
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替换产品名称的正确代码
我如何解决这个问题 要使用的过滤器是
woocommerce\u order\u item\u display\u meta\u value
。它需要3个参数,第三个参数是您希望挂接的地方的装运对象。您测试它的tye是否为“shipping”,以确保不修改其他区域。接下来,您必须获取父order对象,从中获取order items对象,并循环它们以构建输出字符串
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;
}
有什么需要帮忙的吗?问得好,问得清楚,想找到一个合理的解决办法,亚历山大-我现在正在考虑这个问题。太好了。非常感谢你的回答和解释。PHP真的很强大。我仍然不明白如何完整地阅读代码,但多亏了你的帮助,我对它的工作原理有了更好的了解。再次感谢你。