kreamweb
8/4/2016 - 5:17 AM

Woocommerce - Sort cart items by price

Woocommerce - Sort cart items by price

add_action( 'woocommerce_cart_loaded_from_session', 'wpm_cart_order_items_by_price' );

function wpm_cart_order_items_by_price( $cart ) {

	//if the cart is empty do nothing
	if ( empty( $cart->cart_contents ) ) {
		return;
	}

	//this is an array to collect cart items
	$cart_sort = array();

	//add cart item inside the array
	foreach ( $cart->cart_contents as $cart_item_key => $cart_item ) {
		$cart_sort[ $cart_item_key ] = $cart->cart_contents[ $cart_item_key ];
	}

	//call the function to sort cart items
	@uasort( $cart_sort, 'wpm_sort_by_price' );


	//replace the cart contents with the array sorted
	$cart->cart_contents = $cart_sort;

}

function wpm_sort_by_price( $cart_item_a, $cart_item_b ) {
	return $cart_item_a['data']->get_price() > $cart_item_b['data']->get_price();
}

function wpm_sort_by_price_desc( $cart_item_a, $cart_item_b ) {
	return $cart_item_a['data']->get_price() < $cart_item_b['data']->get_price();
}