Skip to content

Instantly share code, notes, and snippets.

@maxrice
Last active April 23, 2020 18:11
Show Gist options
  • Save maxrice/6541634 to your computer and use it in GitHub Desktop.
Save maxrice/6541634 to your computer and use it in GitHub Desktop.
WooCommerce - sort the cart alphabetically by the product's title
<?php
add_action( 'woocommerce_cart_loaded_from_session', function() {
global $woocommerce;
$products_in_cart = array();
foreach ( $woocommerce->cart->cart_contents as $key => $item ) {
$products_in_cart[ $key ] = $item['data']->get_title();
}
natsort( $products_in_cart );
$cart_contents = array();
foreach ( $products_in_cart as $cart_key => $product_title ) {
$cart_contents[ $cart_key ] = $woocommerce->cart->cart_contents[ $cart_key ];
}
$woocommerce->cart->cart_contents = $cart_contents;
}, 100 );
@XiaoFaye
Copy link

what if I want to sort by product taxonomy? can we do that?

@rilwis
Copy link

rilwis commented Mar 18, 2015

This works perfectly. Thanks for sharing!

@adamsoleymani
Copy link

Is there a way to sort it by the product order #?

Thanks,
Adam

@pavlo-bondarchuk
Copy link

hi
i want reorder by price low to hight
i replace get_title>get_price and product_title>product_price


add_action( 'woocommerce_cart_loaded_from_session', function() { global $woocommerce; $products_in_cart = array(); foreach ( $woocommerce->cart->cart_contents as $key => $item ) { $products_in_cart[ $key ] = $item['data']->**get_price**(); } natsort( $products_in_cart ); $cart_contents = array(); foreach ( $products_in_cart as $cart_key => $**product_price**) { $cart_contents[ $cart_key ] = $woocommerce->cart->cart_contents[ $cart_key ]; } $woocommerce->cart->cart_contents = $cart_contents; }, 100 );


work ok

if i want reorder price high to low - how rewrite code?

thanks

@kognito
Copy link

kognito commented Mar 19, 2018

Hi @pasharadio,

Did you resolve this by any chance?

Cheers
Clemens

@RegisStudio
Copy link

RegisStudio commented Mar 28, 2018

@pasharadio,
Replace:
$woocommerce->cart->cart_contents = $cart_contents;
to:
$woocommerce->cart->cart_contents = array_reverse($cart_contents);

@selinrv
Copy link

selinrv commented Dec 13, 2018

Is there a way to add all sort of ordering methods to cart page?

@parmarkartik19
Copy link

Checkout Sort WooCommerce Products on Cart and Order plugin.

https://kartechify.com/product/sort-woocommerce-products-in-cart-and-order/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment