Вам также нужно установить новый сеанс корзины, и вы также можете использовать свойство $cart
, переданное в действие:
(хотя я не проверял эту идею, пожалуйста, попробуйте)
add_action( 'woocommerce_cart_loaded_from_session', function($cart) {
$products_in_cart = array();
foreach ( $cart->get_cart() as $key => $item ) {
$terms = wp_get_post_terms($item['data']->get_id(), 'product_cat' );
$products_in_cart[ $key ] = $terms[0]->name;
}
asort( $products_in_cart );
$cart_contents = array();
foreach ( $products_in_cart as $cart_key => $product_title ) {
$cart_contents[ $cart_key ] = $cart->cart_contents[ $cart_key ];
}
$cart->set_cart_contents($cart_contents);
$cart->set_session();
}, 100, 1 );