在Woocommerce管理订单页面中按SKU排序订单商品

问题描述 投票:0回答:2

如果可能,我很沮丧。我一直想只在前端看到按SKU排序的结果。不是后端。当您编辑订单时,我希望有一个SKU列,可以按ASC / DESC进行排序。是否有实现此目的的插件,或者可以在其他栏中添加的代码段?任何帮助将不胜感激。下图显示了我正在谈论的SKU,希望将其移动/复制到自己的列中。

enter image description here

wordpress woocommerce hook-woocommerce orders
2个回答
0
投票
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;
}

0
投票

@@ mujuonly有一个很好的答案。我一直在使用它,直到发现与woocommerce订阅续订发生冲突。原始订单很好,但续订订单缺少其运送方式。

© www.soinside.com 2019 - 2024. All rights reserved.