Сортируем товары в корзине по алфавиту

Обычно, когда мы говорим о какой-либо сортировке в WordPress, неважно – записей или товаров, мы всегда начинаем подразумевать хук pre_get_posts.

Хотите лучше разбираться в WooCommerce? Рекомендую ознакомиться с моим видеокурсом по этой ссылке.

Однако в корзине WooCommerce ситуация совсем другая – товары лежат в массиве WC()->cart->cart_contents, в том порядке, в котором они туда были добавлены. А это значит, что всё, что нам понадобится – это обычные PHP-функции сортировки массива, вы можете выбрать на выбор одну из:

  • sort() – тупо сортирует по алфавиту по возрастанию (A-Z).
  • natsort() – позволяет задать более натуральный порядок, например после product1 будет идти product2, а не product10, более подробно можете прочекать в официальной документации.

Саму сортировку будем осуществлять в экшн-хуке woocommerce_cart_loaded_from_session, код же можете вставить либо в functions.php текущей или дочерней темы.

add_action( 'woocommerce_cart_loaded_from_session', 'truemisha_sort_cart_alphabetically', 25 );
 
function truemisha_sort_cart_alphabetically() {
 
	// создадим отдельный массив с товарами из корзины, который и будем сортировать
	$products_to_sort = array();
 
	// этот же массив по структуре совпадает с массивом товаров из корзины, он понадобится позже
	$cart_contents = array();
 
 
	// заполняем первый массив, который нужен только для сортировки
	foreach ( WC()->cart->get_cart_contents() as $key => $item ) {
		$products_to_sort[ $key ] = $item['data']->get_title();
	}
 
	// сортируем
	sort( $products_to_sort ); // или natsort( $products_to_sort )
 
	// заполяем массив товаров корзины
	foreach( $products_to_sort as $cart_key => $product_title ) {
		$cart_contents[ $cart_key ] = WC()->cart->cart_contents[ $cart_key ];
	}
 
	WC()->cart->cart_contents = $cart_contents; // сохраняем назад
 
}

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.