Сортировка позиций заказа по SKU в почтовых уведомлениях Woocommerce - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь заказать продукты по sku в рамках заказа по электронной почте . В Woocommerce .

Мне не повезло со следующим кодом.

Некоторая помощь? Спасибо, что теперь!

add_filter( 'woocommerce_order_get_items', function( $items, $order ) {
    uasort( $items,
        function( $a, $b ) {
            return strnatcmp( $a['_sku'], $b['_sku'] );
        }
    );
    return $items;
}, 10, 2 );

Пример результата сортировки:

  • INFSTRAW I
  • NFMUFFIN
  • INFFLORES
  • INFTAFLOR
  • INFTAPINK
  • CTEPINK4
  • CTECAKE4
  • INFCHOCO
  • UCUBTOMA

1 Ответ

0 голосов
/ 26 апреля 2018

Вот способ сделать это:

add_filter( 'woocommerce_order_get_items', 'filter_order_get_items', 10, 3 );
function filter_order_get_items( $items, $order, $types = 'line_item' ) {
    // Check items type: Only "line_item" types for Woocommerce version 3.3+
    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;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Сортирует элементы по порядку заказа ASC по внутренним и внутренним заказам, а также по электронной почте


Кроме того, сортировка элементов после размещения заказа до сохранения данных в базе данных может быть лучшим способом сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...