WooCommerce omogućuje razvrstavanje proizvoda na stranici trgovine i kategorija. Zadano razvrstavanje je po redoslijedu u izborniku (menu_order), što znači da proizvode možete razvrstati ručno na stranici pregleda svih proizvoda a ako takvo razvrstavanje nije postavljeno, proizvodi su razvrstani po abecedi.
Redoslijed proizvoda možete postaviti u administraciji, na stranici pregleda proizvoda, klikom na opciju “Sortiranje” te zatim drag’n’dropati proizvode na željenu poziciju.
Druga ugrađena opcija za razvrstavanje se nalazi u opcijama proizvoda, u tabu “Napredno”.
Promjena izvornog (default) načina sortiranja se od WooCommerce verzije 3.3.x podešava u Customizeru.
Vrijednosti koje se koriste za sortiranje su:
- menu_order (zadano) – po ručnom redoslijedu. Ako ne postoji, po abecedi
- popularity – po broju prodanih primjeraka
- rating – po prosječnoj ocjeni (recenzije)
- date – prvo se prikazuju najnoviji proizvodi
- price – od jeftnijih prema skupljim proizvodima
- price-desc – od skupljih prema jeftinijim proizvodima
Kad smo pokrili osnove, možemo krenuti s promjenama opcija razvrstavanja.
Uklanjanje opcije razvrstavanja
WooCommerce dodaje ovaj padajući izbornik u default predloške pomoću hook-a woocommerce_before_shop_loop
s prioritetom 30.
Za uklanjanje ćemo koristiti sljedeću akciju:
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
Promjena default vrijednosti za razvrstavanje
Pomalo suvišno jer se isto može postići pomoću Customizera, ali evo i te opcije 😉
add_filter('woocommerce_default_catalog_orderby', 'mx_change_default_catalog_orderby'); function mx_change_default_catalog_orderby( $sort_by ) { return 'popularity'; }
Uklanjanje pojedinačnih opcija razvrstavanja
Za uklanjanje opcija ćemo koristiti hook woocommerce_catalog_orderby
.
add_filter( 'woocommerce_catalog_orderby', 'mx_remove_specific_sorting_options' ); function mx_remove_specific_sorting_options( $options ){ unset( $options[ 'popularity' ] ); //unset( $options[ 'menu_order' ] ); //unset( $options[ 'rating' ] ); //unset( $options[ 'date' ] ); //unset( $options[ 'price' ] ); //unset( $options[ 'price-desc' ] ); return $options; }
Otkomentirajte (uklonite “//”) za opcije koje želite ukloniti.
Promjena naziva opcija razvrstavanja
Za promjenu naziva ćemo također koristiti hook woocommerce_catalog_orderby
.
add_filter( 'woocommerce_catalog_orderby', 'mx_rename_specific_sorting_options' ); function mx_rename_specific_sorting_options( $options ){ $options[ 'popularity' ] = 'Prvo najprodavaniji proizvodi'; //$options[ 'menu_order' ] = 'Novi naziv'; //$options[ 'rating' ] = 'Novi naziv'; //$options[ 'date' ] = 'Novi naziv'; //$options[ 'price' ] = 'Novi naziv'; //$options[ 'price-desc' ] = 'Novi naziv'; return $options; }
Otkomentirajte (uklonite “//”) za opcije koje želite preimenovati.
Promjena redoslijeda opcija razvrstavanja
Za promjenu redoslijeda najjednostavnije je ponovno definirati cijeli array.
add_filter( 'woocommerce_catalog_orderby', 'mx_change_sorting_options_order', 5 ); function mx_change_sorting_options_order( $options ){ $options = array( 'menu_order' => __( 'Default sorting', 'woocommerce' ), // default može ostati na prvom mjestu 'price' => __( 'Sort by price: low to high', 'woocommerce' ), // sortiranje od niže prema višoj cijeni na drugom mjestu 'price-desc' => __( 'Sort by price: high to low', 'woocommerce' ), // sortiranje od više prema nižoj cijeni na trećem mjestu // ostale opcije bez promjene redoslijeda 'popularity' => __( 'Sort by popularity', 'woocommerce' ), 'rating' => __( 'Sort by average rating', 'woocommerce' ), 'date' => __( 'Sort by latest', 'woocommerce' ), ); return $options; }