Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 基于SKU的后端订单排序_Wordpress_Sorting_Woocommerce_Hook - Fatal编程技术网

Wordpress 基于SKU的后端订单排序

Wordpress 基于SKU的后端订单排序,wordpress,sorting,woocommerce,hook,Wordpress,Sorting,Woocommerce,Hook,我正在尝试按sku对手动添加的订单进行排序 我试过所有这些代码: 下面的代码是按名称排序的 add_filter('woocommerce_order_status_changed', 'sortOrderItemsSKU', 10, 2); function sortOrderItemsSKU($items, $order) { uasort( $items, function( $a, $b ) { return strcmp( $a['

我正在尝试按sku对手动添加的订单进行排序

我试过所有这些代码:

下面的代码是按名称排序的

add_filter('woocommerce_order_status_changed', 'sortOrderItemsSKU', 10, 2);
function sortOrderItemsSKU($items, $order) {
    uasort( $items,
        function( $a, $b ) {
            return strcmp( $a['name'], $b['name'] );
        }
    );
    return $items;
}
但当更改为_sku/sku时,两者都不起作用

function( $a, $b ) {
    return strcmp( $a['_sku'], $b['_sku'] );
}

非常感谢您的帮助。

我确实找到了另一个解决方案。它返回已排序的数组,但顺序中的项目没有被排序:

add_action( 'woocommerce_order_status_changed', 'process_offline_order', 10, 4 );
function process_offline_order( $order_id, $items, $order, $types = 'line_item' ){
            
    $order = new WC_Order( $order_id ); 
    $items = $order->get_items(); 
    
    $item_skus = $sorted_items = array();

    foreach ( $items as $item_id => $item ) {
        
        $product = wc_get_product( $item['product_id'] );
        $product_id = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id();
                    
        $product = $item->get_product(); 
        $item_skus[$product->get_sku()] = $item_id;
        
    }
    
    ksort($item_skus);

    foreach( $item_skus as $keyL => $valueL ){
        $sorted_items[$keyL] = $items[$keyL];
        $sorted_items[$valueL] = $items[$valueL];
    }

    return $item_skus;
}
所以问题可能就在这一部分:

foreach( $item_skus as $keyL => $valueL ){
    $sorted_items[$keyL] = $items[$keyL];
    $sorted_items[$valueL] = $items[$valueL];
}   
return $item_skus;

有什么建议吗?

@LoicTheAztec Wordpress Guru:)?您的代码无法工作,因为woocommerce\u order\u status\u changed\u不是要使用的正确钩子…正确的钩子是woocommerce\u order\u get\u items,如下答案所示: