Сначала отображаем товары, которые есть в наличии

В этом уроке я покажу как сделать две вещи:

  • Сначала мы настроим сортировку товаров на странице Магазин и категориях товаров таким образом, что товары в наличии будут отображаться в первую очередь, а потом уже все остальные.
  • Затем мы пойдём чуть дальше и создадим опцию сортировки «Сначала товары в наличии».

Также хочу напомнить, что у меня на сайте есть видеокурс по WooCommerce, в котором мы с нуля создаём тему для интернет-магазина на основе готовой вёрстки 🚀

Сначала давайте попробуем отсортировать товары при помощи добавления хука в functions.php без создания опций сортировки. Я не исключаю того, что вы мастерски владеете хуком pre_get_posts, но я не публиковал бы этот пост, если бы не хотел показать вам какой-то интересный фильтр-хук именно Вукомерса. И это – woocommerce_get_catalog_ordering_args.

add_filter( 'woocommerce_get_catalog_ordering_args', 'truemisha_sort_by_stock', 25 );
 
function truemisha_sort_by_stock( $args ) {
 
	$args[ 'meta_key' ] = '_stock_status';
	$args[ 'orderby' ] = 'meta_value';
	$args[ 'order' ] = 'ASC';
 
	return $args;
 
}

Добавление опции сортировки «Сначала товары в наличии»

Добавение опции сортировки, позволяющей отобразить товары в наличии в первую очередь

Так как у меня уже есть на сайте подробнейший урок про опции сортировки, то сейчас я не буду уходить слишком глубоко в детали, а вот готовый код:

/*
 * Добавление опции сортировки
 */
add_filter( 'woocommerce_default_catalog_orderby_options', 'truemisha_new_orderby_option', 25 );
add_filter( 'woocommerce_catalog_orderby', 'truemisha_new_orderby_option', 25 );
 
function truemisha_new_orderby_option( $sortby ) {
	$sortby[ 'vnalichii' ] = 'Сначала товары в наличии';
	return $sortby;
}
 
/*
 * Осуществление сортировки
 */
add_filter( 'woocommerce_get_catalog_ordering_args', 'truemisha_sort_by_stock', 25 );
 
function truemisha_sort_by_stock( $args ) {
 
	if ( isset( $_GET['orderby'] ) && 'vnalichii' == $_GET['orderby'] ) {
		$args[ 'meta_key' ] = '_stock_status';
		$args[ 'orderby' ] = 'meta_value';
		$args[ 'order' ] = 'ASC';
	}
 
	return $args;
 
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 18

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал