如果可能,我很沮丧。我一直想只在前端看到按SKU排序的结果。不是后端。当您编辑订单时,我希望有一个SKU列,可以按ASC / DESC进行排序。是否有实现此目的的插件,或者可以在其他栏中添加的代码段?任何帮助将不胜感激。下图显示了我正在谈论的SKU,希望将其移动/复制到自己的列中。
add_filter( 'woocommerce_order_get_items', 'filter_order_get_items', 10, 3 );
function filter_order_get_items( $items, $order, $types = 'line_item' ) {
if(count($items) < 2) return $items;
if( $types != 'line_item') return $items;
$item_skus = $sorted_items = array();
// Loop through order line items
foreach( $items as $items_id => $item ){
// Check items type: for versions before Woocommerce 3.3
if($item->is_type('line_item')){
$product = $item->get_product(); //
$item_skus[$product->get_sku()] = $items_id;
}
}
// Check items type: for versions before Woocommerce 3.3 (2)
if( count($item_skus) == 0 ) return $items;
// Sorting in ASC order based on SKUs;
ksort($item_skus); // or use krsort() for DESC order
// Loop through sorted $item_skus array
foreach( $item_skus as $sku => $item_id ){
// Set items in the correct order
$sorted_items[$item_id] = $items[$item_id];
}
return $sorted_items;
}
@@ mujuonly有一个很好的答案。我一直在使用它,直到发现与woocommerce订阅续订发生冲突。原始订单很好,但续订订单缺少其运送方式。