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

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

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

Также хочу напомнить, что у меня на сайте есть видеокурс по 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;
 
}

Миша

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

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

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

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

  • Роман 1 июня 2020 #

    О! Спасибо!)

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.