Удаление некоторых видов сортировки в WooCommerce

В WooCommerce  по умолчанию доступны следующие виды сортировки товаров:

  • Сортировка по умолчанию;
  • сортировки по последним добавленным товарам;
  • сортировки по рейтингу товаров;
  • сортировка по популярным товарам;
  • сортировка по возрастанию цены;
  • сортировка по убыванию цены.

Не всегда на сайте требуются они все. Вот код для удаления отдельных методов сортировки:

add_filter('woocommerce_catalog_orderby','in_woocommerce_catalog_orderby');

function in_woocommerce_catalog_orderby($args){
    unset($args['rating']);
    return $args;
}

Данный код удаляет сортировку по рейтингу.

Ниже представлен список всех видов сортировки.

array(
   'menu_order' => __( 'Default sorting', 'woocommerce' ),
   'popularity' => __( 'Sort by popularity', 'woocommerce' ),
   'rating'     => __( 'Sort by average rating', 'woocommerce' ),
   'date'       => __( 'Sort by latest', 'woocommerce' ),
   'price'      => __( 'Sort by price: low to high', 'woocommerce' ),
   'price-desc' => __( 'Sort by price: high to low', 'woocommerce' ),
)

В случае, если вам нужно наоборот, добавить свой метод сортировки, вы можете воспользоваться кодом:

add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );

function custom_woocommerce_get_catalog_ordering_args( $args ) {
	$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
	if ( 'name_list' == $orderby_value ) {
		$args['orderby'] = 'name';
		$args['order'] = 'ASC';
		$args['meta_key'] = '';
	}
	
	return $args;
}

add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );

function custom_woocommerce_catalog_orderby( $sortby ) {
	$sortby['name_list'] = 'По названию';
	return $sortby;
} 

Как вы видите, этот код позволяет добавить сортировку по названию товара.