autoship_group_order_items
(src > orders.php) This function organizes an WC Order into groups by Frequency, Frequency Type, and Next Occurrence. It also strips out any non-autoship products. Replaces the autoship_group_cart_items function.
Example
/**
* Groups and Orders the supplied order or cart items by Autoship Frequency,
* Autoship Type, and Autoship Next Occurence.
* Order items included in an upsert to QPilot should be grouped by Autoship
*
* @param array $order_items. The order or cart items to sort.
* @return array The original order items sorted by Autoship values.
* any non-autoship items are removed.
*/
function autoship_group_order_items( $order_items ) {
$counter = 0;
// Group frequencies
$frequencies_hash = array();
foreach ( $order_items as $item_key => $item ) {
if ( !isset( $item['autoship_frequency_type'] ) || !isset( $item['autoship_frequency'] ) ||
empty( $item['autoship_frequency_type'] ) || empty( $item['autoship_frequency'] ) )
continue;
$next_occurrence = ( ! empty( $item['autoship_next_occurrence'] ) ) ? $item['autoship_next_occurrence'] : '';
$key = $item['autoship_frequency_type'] . ';' . $item['autoship_frequency'] . ';' . $next_occurrence;
$frequency_type = $item['autoship_frequency_type'];
$frequency = $item['autoship_frequency'];
if ( isset( $frequencies_hash[ $key ] ) ){
$frequencies_hash[ $key ][ 'items' ][$item_key] = $item;
} else {
$frequencies_hash[ $key ] = array(
'frequency_type' => $frequency_type,
'frequency' => $frequency,
'next_occurrence' => $next_occurrence,
'items' => array(
$item_key => $item
)
);
}
}
ksort($frequencies_hash);
return array_values($frequencies_hash);
}